在某些情况下,下面的 XPath 没有任何价值。
$place = extractNodeValue('div[contains(@class, "fn")]/a', $xPath);
我试图找出它是否不包含该empty
功能并且$place=''
没有运气。
有没有办法让这成为可能?
使用var_dump
我得到NULL
.
如果您extractNodeValue()
从问题xPath 或运算符 2 中指代您的函数,计算多于两个?目前它可能会返回:
''
) - 如果 XPath 匹配某些节点,但您提供的属性或节点值确实是空字符串,因为DOMElement::getAttribute和DOMNode::getValue都返回字符串。无论如何,PHP empty认为这两种情况都是空的,所以如果没有一个例子来看看你是如何使用它的,就没有办法告诉你在哪里运气不好。
如果您不想区分上述两种情况,我的建议是将函数的输出标准化为:
function extractNodeValue($query, $xPath, $attribute = null) {
$node = $xPath->query("//{$query}")->item(0);
if (!$node) {
return '';
}
return $attribute ? $node->getAttribute($attribute) : $node->nodeValue;
}
有了这个简单的验证如下应该工作:
$place = extractNodeValue('div[contains(@class, "fn")]/a', $xPath);
if (!empty($place)) {
// do something
} else {
// do something else
}
extractNodeValue()
您的代码示例中缺少函数的定义。所以这个问题不能真正回答,就像一个黑匣子。
根据您问题中的 var_dump,您需要比较 if$place
是否与 相同NULL
,即$place === NULL
or is_null($place)
。
示例(详细):
$place = extractNodeValue('div[contains(@class, "fn")]/a', $xPath);
$hasValue = $place !== NULL;
if ($hasValue)
{
# do something with $place
}