0

我正在尝试从 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 字符?

感谢您的关注!

4

2 回答 2

2

你经常使用 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;
}
于 2017-02-15T11:30:25.427 回答
0

谢谢,用户 Veve 的评论回答了我的问题。

以下行解决了我的问题:

$str = mb_convert_encoding( $str, 'html-entities', 'utf-8' );  
于 2017-02-15T11:37:55.123 回答