PHP的DOMDocument检查跨度类(php domdocument check span cl

2019-10-30 21:59发布

我如何可以遍历所有的标签和检查,如果类是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>

非常感谢。

Answer 1:

通过所有follwing将循环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查询特定元件(例如,只选择与类元素font17font18 )。

请注意,我用DOMXPath,因为这会给你更多的灵活性,以更改查询,选择您需要根据您的HTML元素

如果你只需要选择与类元素font17font18可以查询更改为类似:

$nodes = $xpath->query('//span[contains(@class, "font17")]|//span[contains(@class, "font18")]');

演示: http://codepad.viper-7.com/mHo5P7



Answer 2:

你的HTML将给出错误Input is not proper UTF-8, indicate encoding ! Bytes: 0xE0 0x20 0x6D 0x65 Input is not proper UTF-8, indicate encoding ! Bytes: 0xE0 0x20 0x6D 0x65 ,如果您使用$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 />";
    }
}


文章来源: php domdocument check span class