Регулярное выражение для извлечения расширения бизнеса из номера телефона - PullRequest
0 голосов
/ 16 июня 2011

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

Это также должно работать с использованием "ext", "EXT", "Ext", "eXt", "ext." И "Ext».По сути, просто охватите все общие возможности его использования.

Мне просто нужна часть "x 7302".На самом деле, я просто собираюсь сократить его до просто добавочного номера, как только извлечу его.

Может кто-нибудь помочь мне, пожалуйста?Регулярные выражения - это то, с чем я сталкиваюсь, когда они становятся более сложными.

Я делаю это в функции PHP (preg_match), если это кому-нибудь поможет.

Ответы [ 7 ]

5 голосов
/ 16 июня 2011

Возможно, это поможет вам поиграть:

$phonenumber = '777.777.7777 x 7302';

$extension = preg_replace('(^.*(ext|x) ?([0-9]+)$)i', '$2', $phonenumber);

echo $extension;

Используйте модификатор i (в конце), чтобы сделать регистр нечувствительным к регистру, чтобы соответствовать всем комбинациям ext.Я использовал группу, чтобы предложить оба варианта: ext или x: (ext|x).

Остальное ищет номер в конце, и между EXT и номером возможен пробел.

4 голосов
/ 16 июня 2011

попробуйте с регулярным выражением:

/e?xt?\.?\s*\d+$/i 

<?

echo "<pre>";
     $phone = '777.777.7777 x 7302'; 
        preg_match("/e?xt?\.?\s*\d+$/i", $phone, $matched); 
        print_r($matched);
?>

Выход:

Array
(
    [0] => x 7302
)
0 голосов
/ 16 июня 2011

Я немного подозреваю регулярное выражение, поэтому я немного предвзят, когда говорю, можно ли просто разбить строку, используя PHP-функцию "explode ()", используя символ "x" в качестве разделителя?

Вот ссылка на руководство по PHP для этой функции, если вы не знакомы с ней:

Explode ()

0 голосов
/ 16 июня 2011

Попробуйте эту функцию:

$pn = "777.777.7777 x 7302"; 

function get_ext($pn)
{
$ext = preg_replace('/[\d\.\s]+[ext\s]+(\d{1,})/i', '$1', $pn);
return $ext;
}

echo get_ext($pn);
//7302
0 голосов
/ 16 июня 2011

Если вам нужны только последние цифры строки, вы можете использовать:

\D+(\d+)$

\D+ как минимум один нецифровый знак, за которым следует:

(\d+) как минимумодна цифра (в скобках)

$ в конце строки.

0 голосов
/ 16 июня 2011

Это должно сделать это для вас

/([\d\-\.]+)([ext\. ]+)(\d+)/i

Первый набор соответствует числам, разделенным тире или точкой. Второй набор соответствует вашей добавочной строке, а третий набор соответствует вашему добавочному номеру.

0 голосов
/ 16 июня 2011
\w+\s*\d+$

Это более простое регулярное выражение, предполагающее, что ввод аналогичен тому, что вы предоставили.

...