是否可以访问包含Unicode类名的元素?
实际上,我正在访问这个网站,但它们的类名以Unicode字符U+1F41D HONEYBEE为前缀。
$html = file_get_contents('https://www.honestbee.my/en/groceries/stores/bens-independent-grocer/products/720365');
$doc = new \DOMDocument();
$doc->loadHTML($html);
$xpath = new \DOMXpath($doc);
$elements = $xpath->query("//[@class='ap0']");
if (!is_null($elements)) {
foreach ($elements as $element) {
echo "<br/>[". $element->nodeName. "]";
$nodes = $element->childNodes;
foreach ($nodes as $node) {
echo $node->nodeValue. "\n";
}
}
}
很遗憾,它抛出了错误。
ErrorException : DOMXPath::query(): Invalid expression
at /paht/to/test-dom.php:83
79| $doc->loadHTML($html);
80|
81| $xpath = new \DOMXpath($doc);
82|
> 83| $elements = $xpath->query("//[@class='ap0']");
84| if (!is_null($elements)) {
85| foreach ($elements as $element) {
86| echo "<br/>[". $element->nodeName. "]";
87|
Exception trace:
1 DOMXPath::query("//[@class='ap0']")
/paht/to/test-dom.php:83
我指的是这里的表情编码,尝试使用\uD83Dap0
也不起作用。
"//[@class='🐝ap0']"
吗?我不确定你从哪里得到了D83D,因为它是一个不同的字符。 - miken32$elements = $xpath->query("//*[@class[contains(., 'ap0')]]");
。 - miken32contains
不能确保目标元素正确。 - Js Lim