getElementsByTagName无法使用' p' (段)

时间:2016-12-07 21:51:08

标签: php getelementsbytagname

我正在尝试将内容称为' item-page'。 html来自卷曲会话,它包含在$ html变量中。我使用的是getElementsByTagName,但它只适用于' div'作为()中的值,如果我把' p'它没有用。有谁知道为什么?

这是代码:

$dom = new DOMDocument;
$dom->loadHTML($html);
$div = $dom->getElementsByTagName('p');
foreach ($div as $tag) {
    if ($tag->getAttribute('class') === 'item-page') {
       echo $tag->nodeValue."<br>"; 
    }
}

这是来自网站的html源代码(我应回应的一段):

<div class="item-page"> 
<p> Chiusura dell'Istituto per gioved&igrave; 8 dicembre 2016 </p>
</div>

(我之所以使用&#39; p&#39;是因为我可以为每个段落开一个新行,如果我使用&#39; div&#39;它显示为单块)。

4 个答案:

答案 0 :(得分:1)

它没有用,因为&#39; p&#39;您网页上的元素没有类&#39; item-page&#39;喜欢你的代码。如果删除if语句,它将按照您的预期运作。

答案 1 :(得分:0)

如果它与'div'一起使用但不与'p'一起使用,这意味着$ html不包含带有class item-page的p元素

答案 2 :(得分:0)

我运行了这段代码:

<?php
$html = "<div class=\"item-page\"> 
<p> Chiusura dell'Istituto per gioved&igrave; 8 dicembre 2016 </p>
</div>";

$dom = new DOMDocument;
$dom->loadHTML($html);
$div = $dom->getElementsByTagName('p');

var_dump($div[0]);
die();

foreach ($div as $tag) {
    if ($tag->getAttribute('class') === 'item-page') {
        echo $tag->nodeValue."<br>";
    }
}

我得到了我期待的回复:

object(DOMElement) #3 (18) { ["tagName"]= > string(1)
"p" ["schemaTypeInfo"] => NULL["nodeName"] => string(1)
"p" ["nodeValue"] => string(53)
" Chiusura dell'Istituto per giovedì 8 dicembre 2016 " ["nodeType"] => int(1)["parentNode"] => string(22)
"(object value omitted)" ["childNodes"] => string(22)
"(object value omitted)" ["firstChild"] => string(22)
"(object value omitted)" ["lastChild"] => string(22)
"(object value omitted)" ["previousSibling"] => string(22)
"(object value omitted)" ["nextSibling"] => string(22)
"(object value omitted)" ["attributes"] => string(22)
"(object value omitted)" ["ownerDocument"] => string(22)
"(object value omitted)" ["namespaceURI"] => NULL["prefix"] => string(0)
"" ["localName"] => string(1)
"p" ["baseURI"] => NULL["textContent"] => string(53)
" Chiusura dell'Istituto per giovedì 8 dicembre 2016 "
}

请注意,根据文档,getElementByTagName返回一个列表

答案 3 :(得分:0)

p移除$dom->getElementsByTagName()并添加div,以便您的结果显示页面上的所有div。

<?php 

$html = <<<EOT

<html>
<head></head>
<body>
<div class="item-page">
<p> Chiusura dell'Istituto per gioved&igrave; 8 dicembre 2016 </p>
</div>
</body>
</html>

EOT;

$dom = new DOMDocument;
$dom->loadHTML($html);
$div = $dom->getElementsByTagName('div');

foreach ($div as $tag) {
    if ($tag->getAttribute('class') === 'item-page') {
       echo $tag->nodeValue."<br>"; 
    }
}  

<强>输出

Chiusura dell'Istituto per giovedì 8 dicembre 2016