在某些情況下,以下XPath沒有任何值。如何檢查XPath的變量是否爲空?
$place = extractNodeValue('div[contains(@class, "fn")]/a', $xPath);
我試圖找到,如果它不與empty
功能和$place=''
沒有運氣遏制。
有什麼辦法可以做到這一點嗎?使用var_dump
我得到NULL
。
在某些情況下,以下XPath沒有任何值。如何檢查XPath的變量是否爲空?
$place = extractNodeValue('div[contains(@class, "fn")]/a', $xPath);
我試圖找到,如果它不與empty
功能和$place=''
沒有運氣遏制。
有什麼辦法可以做到這一點嗎?使用var_dump
我得到NULL
。
您的代碼示例中缺少函數extractNodeValue()
的定義。因此這不能真正回答,就像是一個黑匣子。
根據您問題中的var_dump,您需要比較是否$place
爲identical to NULL
,即$place === NULL
或is_null($place)
。
例(詳細):
$place = extractNodeValue('div[contains(@class, "fn")]/a', $xPath);
$hasValue = $place !== NULL;
if ($hasValue)
{
# do something with $place
}
如果你從你的問題xPath or operator two compute more than two?指你extractNodeValue()
功能目前它可能會返回:
''
) - 如果匹配XPath一些節點,但你所提供的屬性或節點值確實是一個空字符串,因爲這兩個DOMElement::getAttribute和DOMNode::getValue返回字符串。總之,PHP empty認爲這兩種情況下爲空的,所以沒有一個例子來看看您如何使用它,有沒有辦法告訴你哪裏跑出來的運氣。
如果你不想區分上述2例,我的建議是,改成給函數的輸出規範:
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
}