首页 > 解决方案 > 停止 DOMXPath 评估转换特殊字符

问题描述

如果您在带有特殊字符的 url 上运行此 DOMXPath 评估(我意识到在技术上不是有效的 url,但有些网站仍然有它们):

$a = '<a href="http://example.org/diseño"></a>';
$path = new DOMXPath( @DOMDocument::loadHTML( $a ) );
$href = $path->evaluate( 'string(//a/@href)' );

var_dump( $href );
// http://example.org/diseño

有没有办法获得一个带有“正确”href 的字符串 - 就像特殊字符一样?

http://example.org/diseño

还是因为 url 不能有特殊字符,所以 DOMXPath 实际上工作正常?如果是这样,从包含特殊字符的字符串中获取 href 的最干净的替代方法是什么?

标签: phphtml

解决方案


您可以只对 XPath 的返回值进行编码...

echo utf8_decode($href);

这使...

http://example.org/diseño

推荐阅读