我已登录并使用CURL
抓取返回页面,将其加载DOMDocument
,然后使用DOMXPATH
进行查询(以查找' table.essgrid tr& #39)。 (我当时也在查询结果以查找孩子的结果,results->item(2)->nodeValue
是日期或浏览器中的回声为
或{{1 }}。我需要检查它是否是非中断空格或实际文本。
希望通过以下代码有所帮助。
所以我希望这只能回应" table.essgrid> tr> td"它的值不是一个不间断的空间,但它只是在页面上回显:
$dom = new DOMDocument();
$dom->loadHTML($result);
$xpath = new DOMXPATH($dom);
$result = $xpath->query('//table[@class="essgrid"]//tr');
if($result->length > 0) {
foreach($result as $item) {
$tds = $item->getElementsByTagName('td');
if($tds->length) {
if($tds->item(2)->nodeValue != " " && $tds->item(2)->nodeValue != " ") {
echo = '<div>not blank:</div>';
echo = '<div>'.$tds->item(2)->nodeValue.'</div>';
}
}
}
}
但它反映了所有结果,而不仅仅是有时间的结果。所以我认为我的问题是检查值是否= <div>not blank:</div>
<div> </div>
<div>not blank:</div>
<div> </div>
<div>not blank:</div>
<div>13:00</div>
<div>not blank:</div>
<div> </div>
<div>not blank:</div>
<div>14:30</div>
<div>not blank:</div>
<div>13:00</div>
<div>not blank:</div>
<div> </div>
,但我所尝试的任何内容似乎都无效。
答案 0 :(得分:5)
当您想要nodeValue
作为
进行比较时,您需要了解两件事:
是一个表示特定字符的HTML实体,此处为非中断空格,可以正式指定为Unicode Character 'NO-BREAK SPACE' (U+00A0)。掌握了这些一般信息,您可以轻松解决问题。由于
代表 NO-BREAK SPACE(U + 00A0),因为DOMElement::nodeValue
将内容返回为UTF-8编码字符串,而 NO-BREAK SPACE < / em> UTF-8在PHP中是"\xC2\xA0"
,你可以简单地比较它:
/** @var $td DOMElement */
$td = $tds->item(2);
if ($td->nodeValue !== "\xC2\xA0") {
// TD content is not " "
}
希望这能为您提供所需的指示。