2013-10-08 2 views
0

Я пытаюсь найти правильную строку для preg_match в этой ситуациифайла получить содержание preg_match

это данные я пытаюсь скрести

<td style="background-color:#FFFF66;font-weight:bold;">08/21/2013</td><td> 

Я просто нужно 08/21/2013 Если я просто напечатаю $ file_string, он полностью распечатает всю страницу, когда я попытаюсь вытащить эту дату. У меня есть ощущение, что это связано с кавычками или косую черту, я попытался это и несколько других комбо, мезо-

preg_match("/bold;\">(.+)\<\/td><td>/i", $file_string, $matches); 
$print = "$matches[1]"; 
echo $print; 

ответ

1

Как об этом?

preg_match("/[0-9]{2}\/[0-9]{2}\/[0-9]{4}/", $file_string, $matches); 
+1

Используйте \ d вместо [0-9] '# \ d {2}/\ d {2}/\ d {4} # ' –

+0

спасибо, ребята, я попробовал и тех, и, читая их, они делают идеальный смысл не возвращает никаких результатов – user1548769

+0

Это то, что мне пришлось в конечном итоге использовать с помощью 'code' preg_match ("/((\ d {2}) \/(\ d {2}) \/(\ d {4}))/", $ file_string, $ matches); 'код' – user1548769

0

Регулярные выражения жадные по умолчанию; они соответствуют как можно больше. Вы можете использовать модификатор неохотный, чтобы соответствовать только как можно меньше. Кроме того, вам не нужна обратная косая черта перед <.

preg_match("/bold;\">(.+?)<\/td><td>/i", $file_string, $matches); 
+1

спасибо. Я пробовал это, но это не сработало. – user1548769

+1

«не работает», как правило, не предоставляет достаточной информации для решения любой проблемы. – Joni

+0

Когда я сказал, что это не сработало, я имел в виду, когда я тестировал код, который вы поставили выше, на экране не было отображено никаких результатов. С мастерингом я смог заставить его работать с preg_match ("/ ((\ d {2}) \/(\ d {2}) \/(\ d {4})) /", $ file_string, $ matches); не то, что нет, вероятно, нескольких других способов заставить его работать. Снова благодарим вас за то, что нашли время, чтобы подать ответ, и жаль, что я неясен в своем ответе. – user1548769

Смежные вопросы