PHP 在第一个字母数字字符处分解字符串
PHP explode string at first alphanumeric character
我有这样的字符串。
$str = "-=!#?Bob-Green_Smith";
$str = "-_@!?1241482";
我怎样才能在第一个字母数字匹配时爆炸它们。
例如:
$str = "-=!#?Bob-Green_Smith";
becomes:
$val[0] = "-=!#?";
$val[1] = "Bob-Green_Smith";
快速想到有时字符串不会包含初始字符串,
所以我需要检查第一个字符是否是字母数字..否则 Bob-Green_Smith 会在他不应该的时候被拆分。
谢谢
您可以这样做:
$str = "-=!#?1Bob-Green_Smith";
preg_match('~[a-z0-9]~i', $str, $match, PREG_OFFSET_CAPTURE);
echo $bubString = substr($str, $match[0][1]);
您可以使用 preg_match
。
这将匹配“non word characters
”零个或多个作为第一组。
然后其余的作为第二个。
输出将有三项,第一项是完整的字符串,所以我使用array_shift
将其删除。
$str = "-=!#?Bob-Green_Smith";
Preg_match("/(\W*)(.*)/", $str, $val);
Array_shift($val); // remove first item
Var_dump($val);
我有这样的字符串。
$str = "-=!#?Bob-Green_Smith";
$str = "-_@!?1241482";
我怎样才能在第一个字母数字匹配时爆炸它们。 例如:
$str = "-=!#?Bob-Green_Smith";
becomes:
$val[0] = "-=!#?";
$val[1] = "Bob-Green_Smith";
快速想到有时字符串不会包含初始字符串,
所以我需要检查第一个字符是否是字母数字..否则 Bob-Green_Smith 会在他不应该的时候被拆分。
谢谢
您可以这样做:
$str = "-=!#?1Bob-Green_Smith";
preg_match('~[a-z0-9]~i', $str, $match, PREG_OFFSET_CAPTURE);
echo $bubString = substr($str, $match[0][1]);
您可以使用 preg_match
。
这将匹配“non word characters
”零个或多个作为第一组。
然后其余的作为第二个。
输出将有三项,第一项是完整的字符串,所以我使用array_shift
将其删除。
$str = "-=!#?Bob-Green_Smith";
Preg_match("/(\W*)(.*)/", $str, $val);
Array_shift($val); // remove first item
Var_dump($val);