我正在使用domDocument希望解析这个小的HTML代码。我正在寻找具有特定span
的特定id
代码。
<span id="CPHCenter_lblOperandName">Hello world</span>
我的代码:
$dom = new domDocument;
@$dom->loadHTML($html); // the @ is to silence errors and misconfigures of HTML
$dom->preserveWhiteSpace = false;
$nodes = $dom->getElementsByTagName('//span[@id="CPHCenter_lblOperandName"');
foreach($nodes as $node){
echo $node->nodeValue;
}
但由于某种原因,我认为代码或html都有问题(我怎么知道?):
echo count($nodes);
计算节点时,结果始终为1 答案 0 :(得分:5)
您可以使用简单的getElementById:
$dom->getElementById('CPHCenter_lblOperandName')->nodeValue
或以选择方式:
$selector = new DOMXPath($dom);
$list = $selector->query('/html/body//span[@id="CPHCenter_lblOperandName"]');
echo($list->item(0)->nodeValue);
//or
foreach($list as $span) {
$text = $span->nodeValue;
}
答案 1 :(得分:3)
你的四部分问题分三部分给出答案:
另外,控制libxml错误的更好方法是使用libxml_use_internal_errors(true)(而不是'@'运算符,它还会隐藏其他更合法的错误)。那会让你看起来像这样的代码:
<?php
libxml_use_internal_errors(true);
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
foreach($xpath->query("//span[@id='CPHCenter_lblOperandName']") as $node) {
echo $node->textContent;
}