PHP DOM操作における文字化け

PHPで、次のHTMLを読み込んで、title の
テキストノードを取得し表示するものとします。

(1) HTMLコード(sample.html)

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <title>HTMLの練習</title>
  </head>
  <body>
    こんにちは
  </body>
</html>

(2) PHPコード(sample.php)

$sou = file_get_contents(./sample.html);
$dom = new DOMDocument();
@$dom->loadHTML($sou);
// <title>タグの値を取得する
$title = $dom->getElementsByTagName('title')->item(0)->nodeValue;
print "$title\n";

プログラムのソースは共に utf-8 で格納しており、php.ini の設定も utf-8 にしている
ので問題ないはずなんですが・・・・

なんと「HTMLの練習」が正しく表示されない!
文字化けします。

その原因は?
私にゃ分からないので、Gooleさんにお願いしてみると、
素晴らしいご託宣がここにありました。
かいつまんで言うと、

<meta charset="utf-8">

この書き方では、文字コードの判定できないらしく

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

のように書かなければならないとのことである。

お陰様で問題が解決しました。
が、他にも同じような問題があったような???
HTMLのバージョンがアップしても、PHPが追随してないようなイヤ~な感じがします。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


This blog is kept spam free by WP-SpamFree.