だから私はHTMLページを解析しようとしていて、段落(<p>
)を使用して探していますget_elements_by_tag_name('p');
問題は、を使用する$element->nodeValue
と、奇妙な文字が返されることです。ドキュメントは最初に$html
curl を使用して読み込まれ、次に DOMDocument に読み込まれます。
文字セットに関係していると確信しています。
応答の例を次に示します。「aujourdã¢â€â™hui」。
前もって感謝します。
だから私はHTMLページを解析しようとしていて、段落(<p>
)を使用して探していますget_elements_by_tag_name('p');
問題は、を使用する$element->nodeValue
と、奇妙な文字が返されることです。ドキュメントは最初に$html
curl を使用して読み込まれ、次に DOMDocument に読み込まれます。
文字セットに関係していると確信しています。
応答の例を次に示します。「aujourdã¢â€â™hui」。
前もって感謝します。
同じ問題があり、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;
}
元のテキストが UTF-8 であっても、強制的に UTF-8 に変換することでこれを修正しました。
$text = iconv("UTF-8", "UTF-8", $text);
$dom = new SmartDOMDocument();
$dom->loadHTML($webpage, 'UTF-8');
.
.
echo $node->nodeValue;
PHPは奇妙です:)
これはエンコーディングの問題です。エンコーディングをUTF-8に明示的に設定してみてください。
これは役立つはずです:http://devzone.zend.com/article/8855