2

だから私はHTMLページを解析しようとしていて、段落(<p>)を使用して探していますget_elements_by_tag_name('p');

問題は、を使用する$element->nodeValueと、奇妙な文字が返されることです。ドキュメントは最初に$htmlcurl を使用して読み込まれ、次に DOMDocument に読み込まれます。

文字セットに関係していると確信しています。

応答の例を次に示します。「aujourdã¢â€â™hui」。

前もって感謝します。

4

4 に答える 4

7

同じ問題があり、loadHTML() が 2 つのパラメーターをとらなくなったことに気付いたので、別の解決策を見つける必要がありました。DOM ライブラリで次の関数を使用して、HTML コンテンツからファンキーな文字を削除することができました。

private static function load_html($html)
{
    $doc = new DOMDocument;
    $doc->loadHTML('<?xml encoding="UTF-8">' . $html);

    foreach ($doc->childNodes as $node)
        if ($node->nodeType == XML_PI_NODE)
            $doc->removeChild($node);

    $doc->encoding = 'UTF-8';

    return $doc;
}
于 2012-11-14T00:16:49.490 に答える
3

元のテキストが UTF-8 であっても、強制的に UTF-8 に変換することでこれを修正しました。

$text = iconv("UTF-8", "UTF-8", $text);
$dom = new SmartDOMDocument();
$dom->loadHTML($webpage, 'UTF-8');
.
.
echo $node->nodeValue;

PHPは奇妙です:)

于 2011-05-10T06:28:16.250 に答える
1

これはエンコーディングの問題です。エンコーディングをUTF-8に明示的に設定してみてください。

これは役立つはずです:http://devzone.zend.com/article/8855

于 2010-01-08T02:09:53.240 に答える