Определение международных телефонных номеров в строке на PHP


Я пытаюсь написать функцию, которая будет извлекать действительные телефонные номера из строки, которые действительны где-то на планете. Это действительно международный сайт для организации, у которой есть представительства по всему миру, и пользователи в каждом месте получают к нему доступ.

В основном мне это нужно для миграции базы данных. На предыдущих сайтах, с которых я перехожу, использовалось только простое текстовое поле без инструкций и без фильтрации. Таким образом, это приводит к тому, что поля телефона используются во всех всевозможные творческие способы.

Что я ищу, так это просто идентифицировать первый номер телефона в строке, а затем, возможно, удалить все лишние символы, прежде чем устанавливать результат в качестве информации профиля пользователя.

Author: Kara, 2011-06-16

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 или любой другой, который охватывает ваш диапазон.

 2
Author: ldg, 2011-06-15 21:13:38
 5
Author: John Sheehan, 2011-06-16 05:35:07

Во-первых, вам нужно будет составить список допустимых форматов телефонных номеров.

Во-вторых, вам нужно будет создать регулярные выражения для идентификации каждого формата.

В-третьих, вы будете запускать регулярные выражения по своему тексту, чтобы найти числа.

 0
Author: George Cummins, 2011-06-15 20:44:36