大家好,我正在使用正则表达式并且在内容中有空格或换行符时无法使用它。
$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);
答案 0 :(得分:2)
不要使用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>';
}
如果你不确定它的结构,你需要更复杂的东西。
答案 1 :(得分:0)
同意您应该使用DOM。但是你没有考虑到和
之间的空白尝试:
preg_match_all('/<dt><span>(.*)<\/span><\/dt>.*<dd>(.*)<\/dd>/',$content, $output);