2017-01-04 4 views
0

У меня есть строка, как показано ниже, которая может меняться каждый раз.Нужно извлечь телефонный номер в строке

style = " margin: 0; " >
Телефон </p > \ r \ n < p style = " font-weight: bold; margin: 0; " > \ г \ п 0411313062 \ г \ п </р > \ г \ п
</тд > \ г \ п
</тр > \ г \ п
< тр > \ г \ п
< td style = " padding-bottom: 18px; " > \ г \ п

Мне нужно извлечь номер телефона 0411313062 из этой строки.

+1

', который может изменить каждый time' ... для того, чтобы эффективно использовать регулярные выражения, вам потребуются некоторая известная структура. Но я думаю, что вы должны просто использовать парсер XML/HTML вместо этого. –

+0

'strip_tags' игнорировать' \ r \ n' и пробелы и тянуть числа до конца строки? – chris85

+0

, например. 'preg_match ('/^Телефон [\\\ r \\\ n \ h] +? (\ d +)/m', strip_tags ($ string), $ match);'? Если формат изменяется каждый раз, когда вы не можете использовать регулярное выражение, я предполагаю, что вы имели в виду изменение количества каждый раз. – chris85

ответ

0

Вы можете попробовать это:

$text = 'style="margin: 0;">\r\n 
Phone\r\n </p>\r\n <p style="font-weight: bold; margin: 0;">\r\n 0411313062\r\n </p>\r\n 
</td>\r\n 
</tr>\r\n 
<tr>\r\n 
<td style="padding-bottom: 18px;">\r\n'; 
preg_match("/[0-9]{10}/", $text, $matches);// in case of multiple occurrences us preg_match_all 
print_r($matches[0]);//0411313062 
1

Попробуйте

preg_match('\(?([0-9]{3})\s*\)?\s*-?\s*([0-9]{3})\s*-?\s*([0-9]{4})', $string, $match); 

в действии,

https://regex101.com/r/pLqDWw/3

Это будет соответствовать 7 или 10 цифр номера телефонов или без - или (area code), таких как 800-555-5555 или 8005555555 или (800)555-5555 или 555-5555 и т.д.

Если вы должны соответствовать более одного номера, я предложил бы использовать что-то вроде PHPQuery, чтобы уточнить текст (HTML), которое вы ищете для него против. Вы можете попробовать что-то более простое, например, preg_match_all, но как только вы получите поддержку PHPQuery, вы поблагодарите меня.

0

этот код работает нормально. Попробуйте

$tab = <<<EOD 
style="margin: 0;">\r\n Phone\r\n </p>\r\n <p style="font-weight: bold; margin: 0;">\r\n 0411313062\r\n </p>\r\n </td>\r\n 
</tr>\r\n 
<tr>\r\n 
<td style="padding-bottom: 18px;">\r\n) EOD; 


$input= explode("\r\n", $tab); 
print_r($input); 

телефон номер

echo $input[4]; 
Смежные вопросы