PHP首先在字母数字字符处爆炸字符串

时间:2018-05-17 11:36:47

标签: php explode

我有这样的字符串。

$str = "-=!#?Bob-Green_Smith";

$str = "-_@!?1241482";

如何在第一次字母数字匹配时爆炸它们。 例如:

$str = "-=!#?Bob-Green_Smith";

becomes:

$val[0] = "-=!#?";
$val[1] = "Bob-Green_Smith";

很快就想到字符串不会包含初始字符串,

所以我需要检查第一个字符是否是字母数字。否则Bob-Green_Smith会在他不应该分开时被分开。

由于

2 个答案:

答案 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

答案 1 :(得分:-1)

您可以这样做:

$str = "-=!#?1Bob-Green_Smith";
preg_match('~[a-z0-9]~i', $str, $match, PREG_OFFSET_CAPTURE);
echo $bubString = substr($str, $match[0][1]);