Предварительный текст соответствия в php между html-тегами

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

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

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

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

Спасибо.

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

если вы хотите вернуть несколько совпадений, тогда вам нужно использовать 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 

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

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

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

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

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