2009-10-19 2 views
14

Здравствуйте, я хотел бы использовать preg_match в PHP для разбора «нужного текста» из следующих из HTML документаPREG текст матча в PHP между HTML-тегами

<p class="review"> Desired text </p> 

Обычно я хотел бы использовать simple_html_dom для таких вещей но в этом случае он не может быть использован (этот элемент не отображается в каждом желаемом теге div, поэтому я вынужден использовать этот подход, чтобы отслеживать, когда он не появляется, а затем настроить мой массив из simple_html_dom соответственно) ,

В любом случае, это решит мою проблему.

Большое спасибо.

ответ

54
preg_match("'<p class=\"review\">(.*?)</p>'si", $source, $match); 
if($match) echo "result=".$match[1]; 
+1

Работает идеально. Сэкономил мне несколько часов, которые у вас там есть, спасибо за это. –

+1

Добро пожаловать :) – serg

+0

Разве это не может превысить? См. Мой ответ ниже. –

6

Что делать, если строка вы соответствия имеет несколько строк и:

<p class="review"> Desired text1 </p> 
<p class="review"> Desired text2 </p> 
<p class="review"> Desired text3 </p> 

Эта модель будет соответствовать один раз, и матч будет все в строке.

Я думаю, что лучше картина:

"'<p class=\"review\">([^<]*)</p>'si" 
+0

да, спасибо, я пробовал вещи в течение последних 2 часов, и я, наконец, понял, что запасы отображаются с помощью JavaScript после загрузки страницы: ((так, значит, yey, вот почему сценарий не работал, спасибо всем –

+0

Определенно правильный ответ. – user1645377

10

если вы хотите вернуть несколько совпадений, то необходимо использовать preg_match_all(). Затем вы перебираете вторую группу результатов ($ match [1]), чтобы получить только контент между тегами.

$source = "<p class=\"review\"> Desired text1 </p>". 
"<p class=\"review\"> Desired text2 </p>". 
"<p class=\"review\"> Desired text3 </p>"; 


    preg_match_all("'<p class=\"review\">(.*?)</p>'si", $source, $match); 

    foreach($match[1] as $val) 
    { 
     echo $val."<br>"; 


    } 

Outputs: 

Desired text1 
Desired text2 
Desired text3 
Смежные вопросы