Регулярное выражение PHP Разделенное число и строка
Я хотел бы разделить строку, содержащую несколько цифр и букв. Вот так:
ABCd Abhe123
123ABCd Abhe
ABCd Abhe 123
123 ABCd Abhe
Я попробовал это:
<?php preg_split('#(?<=\d)(?=[a-z])#i', "ABCd Abhe 123"); ?>
Но это не работает. Только одна ячейка в массиве с "ABCD Abhe 123"
Я хотел бы, например, в ячейке 0: числа и в ячейке 1: строка:
[0] => "123",
[1] => "ABCd Abhe"
Спасибо вам за вашу помощь!;)
3
2 answers
Используйте preg_match_all
вместо
preg_match_all("/(\d+)*\s?([A-Za-z]+)*/", "ABCd Abhe 123" $match);
Для каждого матча:
-
$match[i][0]
содержит соответствующий сегмент -
$match[i][1]
содержит числа -
$match[i][2]
содержит буквы
(См. здесь для проверки регулярного выражения)
Затем поместите их в массив
for($i = 0; $i < count($match); $i++)
{
if($match[i][1] != "")
$numbers[] = $match[1];
if($match[i][2] != "")
$letters[] = $match[2];
}
ПРАВКА1
Я обновил регулярное выражение . Теперь он ищет либо цифры, либо буквы, с пробелами или без них.
ПРАВКА2
Регулярное выражение правильно, но обработка массива не была. Используйте preg_match_all
, тогда $match
- это массив, содержащий массивы, например:
Array
(
[0] => Array
(
[0] => Abc
[1] => aaa
[2] => 25
)
[1] => Array
(
[0] =>
[1] =>
[2] => 25
)
[2] => Array
(
[0] => Abc
[1] => aaa
[2] =>
)
)
2
Author: Richard de Wit, 2013-10-22 12:00:21
Может быть, что-то вроде этого?
$numbers = preg_replace('/[^\d]/', '', $input);
$letters = preg_replace('/\d/', '', $input);
0
Author: Lajos Veres, 2013-10-22 10:35:16