我正在尝试从HTML字符串中提取所有链接文本和href,但是源字符串是Unicode,nodeValue似乎无法处理这个问题?
$links = array();
$titles = array();
$dom = new DOMDocument();
$dom->loadHTML( $str );
$hrefs = $dom->getElementsByTagName("a");
foreach ($hrefs as $href) {
$links[] = $href->getAttribute("href");
$titles[] = $href->nodeValue;
}
我的源字符串如下所示:
<p><a href='uploads/root/tr_62.pdf'>Türkiye</a></p>
但是我对 $titles[0] 的输出如下所示:
Türkiye
如何使nodeValue尊重Unicode字符?
感谢您的观看!
你经常使用mb_convert_encoding
$dom = new DOMDocument();
$html_data = mb_convert_encoding($str , 'HTML-ENTITIES', 'UTF-8');
$dom->loadHTML( $html_data );
$hrefs = $dom->getElementsByTagName("a");
foreach ($hrefs as $href) {
$links[] = $href->getAttribute("href");
$titles[] = $href->nodeValue;
}
谢谢,用户 Veve 的评论回答了我的问题。
以下行解决了我的问题:
$str = mb_convert_encoding( $str, 'html-entities', 'utf-8' );