Здесь мы различаем 3 типа телефонных номеров.
Первый тип:
+37065782505
37069788505
865782825
65782825
Здесь начало +
необязательно.поэтому мы считаем, что у нас есть минимум 7 цифр для этих чисел.
Таким образом, получено регулярное выражение
(\+?[0-9]{7,})
Второй тип:
+370 655 54298
Здесь у нас есть первый блок, состоящий из +
, за которым следуют от 2 до 6 цифр, а затем несколько других блоков из 2-6 цифр, разделенных пробелами.
Таким образом, получается регулярное выражение
(\+[0-9]{2,6}(\s[0-9]{2,6})+)
Последний тип:
(686) 51852
Это первый блок, состоящий из 2-6 цифр, заключенных в круглые скобки, а затем несколько других блоков из 2-6 цифр, разделенных пробелами.
Таким образом, получается регулярное выражение
(\([0-9]{2,6}\)(\s[0-9]{2,6})+)
Полный код извлечения, следовательно,
preg_match_all("#(\+?[0-9]{7,})|(\+[0-9]{2,6}(\s[0-9]{2,6})+)|(\([0-9]{2,6}\)(\s[0-9]{2,6})+)#",$text,$out);
$found = $out[0];
, где $found
- массив.