使用xpath通配符同时获取“图标”和“快捷方式图标”

yPh*_*hil 2 html php favicon xpath

我试图找出如何使用xpath通配符来获取favicon:

$doc = new DOMDocument();
$doc->strictErrorChecking = FALSE;
$doc->loadHTML(file_get_contents($url));
$xml = simplexml_import_dom($doc);
Run Code Online (Sandbox Code Playgroud)

在这里,我正在测试“快捷方式图标”和“图标”(使用三元运算符):

$query = $xml->xpath('//link[@rel="shortcut icon"]');

$arr = (empty($query) ? $xml->xpath('//link[@rel="icon"]') : $query);

$favicon = $arr[0]['href'];
Run Code Online (Sandbox Code Playgroud)

它可以工作,但不是很优雅;是否有通配符(*)方法可一次性获得“快捷方式图标”和“图标”?

Jus*_* Ko 5

您可以使用contains

//link[contains(@rel, "icon")]
Run Code Online (Sandbox Code Playgroud)

这将匹配在rel属性中具有文本“ icon”的任何链接元素。

注意:如果您知道rel属性将始终是“ icon”和“ shortcut icon”,那么将其显式也许更安全。这样,您就不会获得碰巧包含“ icon”的其他链接。

//link[@rel="icon" or @rel="shortcut icon"]
Run Code Online (Sandbox Code Playgroud)