PHP регулярное выражение, разбить строку по определенным символам одним запросом, крашится на символе точки
Есть номера телефонов в формате (строка):
0930001122, 0960001122
0930001122; 0960001122
0930001122.0960001122.
Соответственно, я хочу разбить на массив по символам: , . ; По запятой и точке с запятой оно заходит в массив, а вот по символу точки - не хочет. Инфа подтягивается с таблицы БД (тип строка)
$kitchen = preg_split("/,/", $obj->phone); // разбиваю по запятой
if(count($kitchen) == 1) {
$kitchen = preg_split("/;/", $obj->phone); // Если длина массива равна одному, то значит там или один телефон, или предыдущий сплит не сработал, пытаюсь разбить по точке с запятой.
}
if(count($kitchen) == 1) {
$kitchen = preg_split("/./", $obj->phone); // Если длина массива равна одному, то значит там или один телефон, или предыдущие сплиты не сработали. Пытаемся разделить строку по точке.
}
При таком коде первые два формата телефонов разбиваются на массив, а третий просто записывается как 0, пустота.
Ответы (1 шт):
Автор решения: ArchDemon
→ Ссылка
Непонятно в чём у вас проблема. Код вполне рабочий, но можно сократить до:
$phone = '0930001122, 0960001122,0930001122; 0960001122; 0930001122.0960001122.';
$kitchen = preg_split("/(\s+)?[.;,](\s+)?/", $phone);
print_r($kitchen);
Получаем результат
Array
(
[0] => 0930001122
[1] => 0960001122
[2] => 0930001122
[3] => 0960001122
[4] => 0930001122
[5] => 0960001122
[6] =>
)