如何迭代所有标记并检查类是否为font18或font17?
$html = new DOMDocument();
$html->load('file.html');
HTML:
<p><a name="bookmark7"></a><span class="font18" style="font-weight:bold;">Abilitazione</span></p>
<p><span class="font17">I medici devono essere autorizzati dallo Stato a praticare la loro professione. I requisiti per ottenere questa autorizzazione variano a seconda delle diverse Nazioni. I laureati presso Facoltà mediche estere possono ottenere l'autorizzazione a esercitare in Italia se rispondono ai requisiti statali per quanto riguarda il tirocinio e se superano l'esame di Stato. Nell'ambito della CEE si tratta tuttora di una questione da definire nei particolari.</span></p>
非常感谢。
答案 0 :(得分:4)
如果您使用Input is not proper UTF-8, indicate encoding ! Bytes: 0xE0 0x20 0x6D 0x65
,那么您的HTML会出现$doc->load("file.html");
错误,这是一个简单的解决方法
$doc = new DOMDocument('1.0', 'UTF-8');
libxml_use_internal_errors(true);
$doc->loadHTML(file_get_contents("file.html"));
foreach ( $doc->getElementsByTagName('span') as $node ) {
if (preg_match("/^font1[7|8]$/", $node->getAttribute('class'))) {
echo $node->nodeValue, "<br /><br />";
}
}
答案 1 :(得分:3)
以下内容将遍历所有span
标记,您可以使用它来检查类(如果您提供的HTML代码段确实是您正在使用的代码段):
$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->load('file.html');
$xpath = new DOMXPath($doc);
$nodes = $xpath->query('//span');
foreach ($nodes as $node) {
echo $node->getAttribute('class');
}
演示:http://codepad.viper-7.com/pQuQw1
如果HTML实际上不同,您可以告诉我,以便我可以更改我的代码段。仅在xpath查询中选择特定元素也是值得的(例如,仅选择具有类font17
或font18
的元素。)
请注意,我使用过DOMXPath,因为这样可以更灵活地更改查询,根据HTML 选择所需的元素
如果您只想选择类font17
或font18
的元素,可以将查询更改为:
$nodes = $xpath->query('//span[contains(@class, "font17")]|//span[contains(@class, "font18")]');