• ベストアンサー

UTF-8サイトを取得しSJISに

以下のPHPで指定のサイトを取得すると文字化けしてしまいます。 何処が悪いのか分かる方、ご指導お願い致します。 <?php $str = file_get_contents('http://esthe-cinderellaesthe.on.omisenomikata.jp/diary'); mb_convert_encoding($str,"SJIS","UTF-8"); if (preg_match('!<div id="content">(.*?)<div class="pr">!s', $str, $res)){ print $res[1]; } ?>

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5292/13826)
回答No.2

mb_convert_encoding の結果が $str に代入されていないのは記載ミスですか?

nomark
質問者

お礼

ご回答ありがとうございます。 何度も見直したのに$str=が抜けていたとは… 寝ぼけた質問で申し訳ございませんでした。

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

preg_matchの特性上utf8に寄せてやらないと精度が保障されない 元ソースがutf8の場合きちんとやるならコンバートする前にマッチさせるほうがよい <?php $str = file_get_contents('・・・'); if (preg_match('!<div id="content">(.*?)<div class="pr">!su', $str, $res)){ $str = mb_convert_encoding($res[1],"SJIS","UTF-8"); print nl2br(htmlspecialchars($str)); } ?>

nomark
質問者

お礼

ご回答ありがとうございます。 何度も見直したのに$str=が抜けていたとは… 寝ぼけた質問で申し訳ございませんでした。 また、コンバート前のマッチに書換えました。 ご指導ありがとうございました。m(_ _)m

  • Dags
  • ベストアンサー率78% (11/14)
回答No.1

$str = mb_convert_encoding($str,"SJIS","UTF-8"); http://php.net/manual/ja/function.mb-convert-encoding.php

nomark
質問者

お礼

ご回答ありがとうございます。 何度も見直したのに$str=が抜けていたとは… 寝ぼけた質問で申し訳ございませんでした。

関連するQ&A