Определение международных телефонных номеров в строке на PHP
Я пытаюсь написать функцию, которая будет извлекать действительные телефонные номера из строки, которые действительны где-то на планете. Это действительно международный сайт для организации, у которой есть представительства по всему миру, и пользователи в каждом месте получают к нему доступ.
В основном мне это нужно для миграции базы данных. На предыдущих сайтах, с которых я перехожу, использовалось только простое текстовое поле без инструкций и без фильтрации. Таким образом, это приводит к тому, что поля телефона используются во всех всевозможные творческие способы.
Что я ищу, так это просто идентифицировать первый номер телефона в строке, а затем, возможно, удалить все лишние символы, прежде чем устанавливать результат в качестве информации профиля пользователя.
3 answers
Вы могли бы использовать что-то вроде этого:
$pattern = '/([\+_\-\(\)a-z ]+)/';
Или
$pattern = '/([^0-9]+)/i';
$phone = preg_replace($pattern,'', $phone);
Или используйте php-фильтр, например:
$phone = (int) filter_var($phone, FILTER_SANITIZE_NUMBER_INT);
Хотя с фильтром вам нужно было бы быть осторожным, если бы вы разрешали значению начинаться с "0".
Затем, в любом случае, проверьте диапазон длин для разрешенных телефонных номеров ~6-12 или любой другой, который охватывает ваш диапазон.
Доступен PHP-порт Библиотеки телефонных номеров Google.
Во-первых, вам нужно будет составить список допустимых форматов телефонных номеров.
Во-вторых, вам нужно будет создать регулярные выражения для идентификации каждого формата.
В-третьих, вы будете запускать регулярные выражения по своему тексту, чтобы найти числа.