gpt4 book ai didi

php - 检查 domnodelist->item(x)->nodeValue == "nbsp;"

转载 作者:行者123 更新时间:2023-12-03 16:02:22 25 4
gpt4 key购买 nike

我已经登录,并使用 CURL 抓取返回页面,使用 DOMDocument 加载它,然后使用 DOMXPATH 查询它(到找到“table.essgrid tr”)。 (然后我也在查询结果以找到子 'td' 和)结果,results->item(2)->nodeValue 是一个日期或者在浏览器中回显为   ;。我需要检查它是不间断空格还是实际文本。

希望这对下面的代码有意义。

$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>';
}
}
}
}

所以我希望它只回显值不是不间断空格的“table.essgrid>tr>td”,但它只是将其回显到页面上:

<div>not blank:</div>
<div>&nbsp;</div>
<div>not blank:</div>
<div>&nbsp;</div>
<div>not blank:</div>
<div>13:00</div>
<div>not blank:</div>
<div>&nbsp;</div>
<div>not blank:</div>
<div>14:30</div>
<div>not blank:</div>
<div>13:00</div>
<div>not blank:</div>
<div>&nbsp;</div>

但它正在回显所有结果,而不仅仅是带时间的结果。所以我认为我的问题是检查值是否 ==  ,但我尝试过的任何地方似乎都不起作用。

最佳答案

当你想比较nodeValue是否为 时,你需要知道两件事:

  1.   是表示特定字符​​的 HTML 实体,这里是不间断空格,可以正式指定为 Unicode Character 'NO-BREAK SPACE' (U+00A0) .
  2. DOMDocument 库在提供或接受字符串值时使用 UTF-8 作为字符编码。

有了这些手头的一般信息,就可以轻松解决您的问题。   代表 NO-BREAK SPACE (U+00A0) 并且 DOMElement::nodeValue 返回内容作为 UTF-8 编码字符串因为 UTF-8 中的 NO-BREAK SPACE 是 PHP 中的 "\xC2\xA0" 你可以简单地比较它:

/** @var $td DOMElement */
$td = $tds->item(2);
if ($td->nodeValue !== "\xC2\xA0") {
// TD content is not "&nbsp;"
}

希望这能为您提供所需的指导。

关于php - 检查 domnodelist->item(x)->nodeValue == "nbsp;",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26617586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com