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);

https://3v4l.org/m2MCg