【问题标题】:php domdocument check span classphp domdocument 检查跨度类
【发布时间】:2012-12-20 14:29:23
【问题描述】:

如何迭代所有标签并检查类是 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>

非常感谢。

【问题讨论】:

  • 你是什么意思“检查是否”据我所知,你有一个或另一个元素。您想检查是否每个元素都有一个?或者你想要一个元素数组?或者也许计算每节课发生的所有时间?你想要什么,你尝试过什么?

标签: php html domdocument dom


【解决方案1】:

如果您使用 $doc-&gt;load("file.html");,您的 HTML 将给出 Input is not proper UTF-8, indicate encoding ! Bytes: 0xE0 0x20 0x6D 0x65 错误,这是一个简单的解决方法

$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 />";
    }
}

【讨论】:

    【解决方案2】:

    以下将循环遍历所有span 标签,您可以使用它来检查类(如果您提供的 HTML sn-p 确实是您正在使用的):

    $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 实际上不同,您可以告诉我,以便我可以更改我的 sn-p。只选择 xpath 查询中的特定元素也可能是值得的(例如,只选择类 font17font18 的元素)。

    请注意,我使用了 DOMXPath,因为这将使您更灵活地更改查询以根据您的 HTML 选择所需的元素

    如果您只想选择 font17font18 类的元素,您可以将查询更改为:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 2021-11-29
      • 2012-05-06
      • 1970-01-01
      • 2011-07-28
      • 1970-01-01
      相关资源
      最近更新 更多