2013-06-25 4 views
0

Мне нужна помощь с регулярным выражением php. У меня переменная $ text. Например: "foo foo random words Caller Телефон: +922432202229 случайные слова foo words" Я хочу извлечь 922432202229 из $ text. Пожалуйста, обратите внимание, что $ текст мог содержит другие подобные номера тоже, так что я просто хочу, чтобы число, которое приходит сразу после «Телефон Caller:» Вот что я пробовал:php регулярное выражение для извлечения телефонного номера

$matches = array(); 
    preg_match_all("/Caller Phone : +[0-9]{12}$/", $text, $matches); 
    $matches = $matches[0]; 
+0

Is It "Телефон: Caller" или "телефон вызывающего абонента:"? (т. е. есть ли место перед двоеточием?) Кроме того, возникает знак плюса ('+')? – IanPudney

ответ

0

это должно быть более гибкий и безопасный:

$matches = array(); 
preg_match_all('/Caller Phone\s*:\s*\(+|)([0-9]{8,12})/i', $text, $matches); 
$phones = $matches[2]; 
+0

Это сработало! Есть ли способ получить только номер? Я имею в виду, что я получаю «Caller Phone: 922432202229», я просто хочу это «922432202229». – phpcoderx

+0

см. Мое редактирование, которое должно делать трюк, используйте '$ matches [1]', также: вы уверены, что ваши телефонные номера всегда 12 номеров с '+' прямо напротив них? потому что это единственные, которые будут соответствовать таким образом. – x4rf41

+0

Не думал об этом, есть ли что-то вроде {12 или 8} или что-то еще для чисел с числом цифр от 8 до 12? – phpcoderx

1

Вам нужно будет собирать фактическое значение за Phone: с помощью (), например, так:

preg_match_all("/Caller Phone : ([0-9]+)$/", $text, $matches);

Я также изменил {12} к +, так что вы также все числа тех пор, пока это будет продолжаться. Затем валидация должна идти после этого.

Только с использованием () у вас будут значения, возвращаемые вашей переменной $matches.

0

Вы можете использовать этот код

$matches = array(); 
    preg_match_all("/Caller Phone:\+\d{12}/i", $text, $matches); 
    $matches = $matches[0]; 

Если у вас есть эти данные в $text переменной

$ текст = "Foo Foo случайных слов звонящего телефона: +922432202229 случайные слова Foo слова";

Он покажет этот результат на ваших приведенных данных

Array 
(
    [0] => Array 
    (
     [0] => Caller Phone:+922432202229 
    ) 

)