PHP взорвать строку в первый буквенно-цифровой символ - PullRequest
0 голосов
/ 17 мая 2018

У меня есть такие строки.

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

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

Как я могу взорвать их при первом буквенно-цифровом совпадении.Например:

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

becomes:

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

Подумайте, иногда строка не будет содержать начальную строку символов,

, поэтому мне нужно проверить, является ли первый символ буквенно-цифровым или нет ..в противном случае Боб-Грин_Смит был бы расколот, когда не должен.

Спасибо

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Вы можете использовать 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

0 голосов
/ 17 мая 2018

Вы можете сделать это следующим образом:

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