[PHP-users 35725] Re: DOMDocument

gotou1213 @ gmail.com gotou1213 @ gmail.com
2012年 6月 4日 (月) 22:38:05 JST


後藤と申します。

DOMDocument::loadHTML は metaタグからHTMLの文字エンコーディングを判断していたと思いますが、

http://www.nhk.or.jp/worldwave/abc/popup/abc120423.html

↑の charset が HTML5 な指定になっているため、loadHTML で
エンコーディングが解釈できていないからではないでしょうか?

試しにそのページのHTMLをダウンロードして、meta タグの charset の部分を
下記のように書き換えて loadHTML に渡せば上手くいくと思います。

  <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">

もしくは loadHTML の直前で

  $html = mb_convert_encoding($html, 'HTML-ENTITIES', 'auto');

などとして、マルチバイト文字を数値文字参照に置き換えてやるとか。


PHP-users メーリングリストの案内