我正在尝试将内容称为' 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ì 8 dicembre 2016 </p>
</div>
(我之所以使用&#39; p&#39;是因为我可以为每个段落开一个新行,如果我使用&#39; div&#39;它显示为单块)。
答案 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ì 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ì 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