[英]RegEX to match all between tags with PHP
因此,我正在編寫一個腳本,該腳本將所有兩個div標簽之間的所有內容都按照我的方式工作,但它與我注意到的所有內容都不匹配,我不確定為什么,是否是由於換行或其他原因問題。 我希望字面上的所有內容(包括其他html標簽)都匹配。
$aPost = preg_match_all('#<div class="posttext">(.*?)</div>#', $rThread, $aPosts);
看起來好像只匹配一行中寫的任何內容而沒有換行符,並且如果div不滿足該條件,則將其完全忽略。
要修復您的正則表達式,請使用dotall修飾符來強制.
匹配換行序列:
preg_match_all('~<div class="posttext">(.*?)</div>~si', $rThread, $aPosts);
但是,我將避免使用正則表達式,並有效地使用DOM和XPath為您完成此操作。
$doc = new DOMDocument;
@$doc->loadHTML($html); // load the HTML data
$xpath = new DOMXPath($doc);
$nodes = $xpath->query('//div[@class="posttext"]');
foreach ($nodes as $node) {
echo $node->nodeValue, "\n";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.