Как разобрать номер мобильного телефона без специального символа - PullRequest
0 голосов
/ 26 июня 2019

Я хочу разобрать номер мобильного телефона без специального символа, например

+61-426 861 479 ====>  61 426 861 479

PHP preg_match_all

preg_match_all('/(\d{2}) (\d{3}) (\d{3}) (\d{3})/', $part,$matches);
if (count($matches[0])){
    foreach ($matches[0] as $mob) {
        $records['mobile'][] = $mob;
    }
}

Ожидаемый результат

+61-426 861 479 ====>  61 426 861 479

1 Ответ

0 голосов
/ 26 июня 2019

Вам не хватает + и - в вашем шаблоне. Вы можете обновить свой шаблон, чтобы использовать 2 группы захвата и использовать preg_match_all . Чтобы добавить номер мобильного телефона в массив, вы можете объединить первый и второй индексы.

\+(\d{2})-(\d{3}(?: \d{3}){2})\b

Regex demo | Php demo

Например

$part = "+61-426 861 478 +61-426 861 479 ";
preg_match_all('/\+(\d{2})-(\d{3}(?: \d{3}){2})\b/', $part, $matches, PREG_SET_ORDER, 0);

if (count($matches)) {
    foreach ($matches as $mob) {
        $records['mobile'][] = $mob[1] . ' ' . $mob[2];
    }
}

print_r($records);

Результат

Array
(
    [mobile] => Array
        (
            [0] => 61 426 861 478
            [1] => 61 426 861 479
        )

)

Если число является единственной строкой, вы также можете удалить все нецифровые цифры, используя \D+, и заменить их пробелом. Затем используйте ltrim, чтобы убрать начальное пространство из +. См. php demo .

...