PHP-изменение формата номера телефона с помощью Regex

Я пытаюсь выяснить, как преобразовать номер телефона в формате
+18761234567
в
876-123-4567
использование регулярного выражения replace.

4 ответов


Я думаю, что это должно работать

preg_replace('/^\+1(\d{3})(\d{3})(\d{4})$/i', '--', '+18761234567');

Я предполагаю, что +1 является константой, а затем используйте \d ярлык для сопоставления десятичных знаков. Значение в {} - количество символов, чтобы соответствовать.


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

Поиск 'телефон':

http://www.regexlib.com/Search.aspx?k=phone&c=-1&m=-1&ps=20


Я знаю, что это не регулярное выражение, но это также работает :-)

$num = '+18761234567';
$formatted = substr($num, 2, 3).'-'.substr($num, 5, 3).'-'.substr($num, 8);

это предполагает, что есть 2 символа a начало игнорировать.

preg_replace("/([0-9a-zA-Z+]{2})([0-9a-zA-Z]{3})([0-9a-zA-Z]{3})([0-9a-zA-Z]{4})/", "--", '+18761234567');