- ベストアンサー
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]; } ?>
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
mb_convert_encoding の結果が $str に代入されていないのは記載ミスですか?
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
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)); } ?>
お礼
ご回答ありがとうございます。 何度も見直したのに$str=が抜けていたとは… 寝ぼけた質問で申し訳ございませんでした。 また、コンバート前のマッチに書換えました。 ご指導ありがとうございました。m(_ _)m
- Dags
- ベストアンサー率78% (11/14)
$str = mb_convert_encoding($str,"SJIS","UTF-8"); http://php.net/manual/ja/function.mb-convert-encoding.php
お礼
ご回答ありがとうございます。 何度も見直したのに$str=が抜けていたとは… 寝ぼけた質問で申し訳ございませんでした。
お礼
ご回答ありがとうございます。 何度も見直したのに$str=が抜けていたとは… 寝ぼけた質問で申し訳ございませんでした。