Регулярное выражение для номеров телефонов с буквами
Мне нужно отформатировать телефонный номер в виде одной длинной строки номеров (формат телефонного номера в США)
// I know there are tons more
$phones = array(
'1(800) 555-1212',
'1.800.555.1212',
'800.555.1212',
'1 800 555 1212',
'1.800 CALL NOW' // 1 800 225-5669
);
foreach($phones as $phone) {
echo "new format: ".(preg_replace("/[^0-9]/", "", $phone)."<br />\n";
}
Теперь это должно вернуть что-то вроде этого:
8005551212 (with or without the 1)
Но как мне сопоставить/преобразовать номер с помощью ВЫЗОВА СЕЙЧАС в:
18002255669
2
Author: Phill Pafford, 2011-03-17
3 answers
Вы могли бы использовать strtr()
.
$number = strtr($number, array('A'=> '2', 'B' => '2', ... 'Z' => '9'));
Или на самом деле, я думаю:
$number = strtr($number, "AB...Z", "22...9");
2
Author: Matthew, 2011-03-16 21:06:30
Чтобы сэкономить время на вводе текста...
$phoneNumber = strtr($phoneLetters, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "22233344455566677778889999");
2
Author: Greg Hollowell, 2017-03-07 12:21:56
Для первого шага вам нужно выполнить замену другого регулярного выражения (ваша версия теперь потеряет все буквы):
$result = preg_replace('/[^A-Z0-9]+/i', '', $phone);
Затем вам нужно взять строку и заменить каждую букву соответствующей цифрой (см. Ответ konforce). На самом деле это не работа для регулярного выражения.
0
Author: Tim Pietzcker, 2011-03-16 21:15:13