[英]Regex issue with PHP and preg_match_all
大家好,我使用正則表達式時遇到問題,當內容中存在空格或換行符時,它無法正常工作。
$content = "<dt><span>Name:</span></dt>
<dd>
John
</dd>
<dt><span>Age:</span></dt>
<dd>
40
</dd>
<dt><span>Sex:</span></dt>
<dd>
Male
</dd>";
我正在使用的正則表達式是
preg_match_all('/<dt><span>(.*)<\/span><\/dt><dd>(.*)<\/dd>/',$content, $output);
不要使用RegEx解析HTML。 使用DOM。 這是一個確定HTML結構的示例。
$dom = new DOMDocument();
@$dom->loadHTML($content);
$xpath = new DOMXPath($dom);
$spans = $xpath->query('//span');
$dds= $xpath->query('//dd');
for ($i = 0; $i < $spans->length; $i++)
{
echo $spans->item($i)->nodeValue . $dds->item($i)->nodeValue . '<br>';
}
如果不確定其結構,則需要更復雜的東西。
同意您應該使用DOM。 但是,您沒有考慮到和之間的空格
嘗試:
preg_match_all('/<dt><span>(.*)<\/span><\/dt>.*<dd>(.*)<\/dd>/',$content, $output);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.