簡體   English   中英

PHP和preg_match_all的正則表達式問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM