調査時間が不足しているため質問いたします。
$str = "<学校><span style=\"color:#FF0000;\">URL</span>"; //utf-8
$str = mb_convert_encoding($str, "sjis", "utf-8");
print $str; // <学校><span style=\"color:#FF0000;\">URL</span>になる
shift_jisでprintした際にutf-8の時と同じ文字列で表示をしたいのです。
ご質問のソースで変換されるはずですが、ソースをUTF-8で保存していますか?
ご確認ください。
念のため、mb_internal_encodingを加えたものを下記にしまします。
<?php mb_internal_encoding('UTF-8'); $str = "<学校><span style=\"color:#FF0000;\">URL</span>"; //utf-8 $str = mb_convert_encoding($str, 'SJIS', 'UTF-8'); print $str; ?>
<学校><span style=\"color:#FF0000;\">URL</span>
ブラウザに表示した場合、HTMLタグはブラウザによって解釈されるので、上記のようには表示されませんが、HTMLタグが変換されているわけではありません。
今のままでも元の文字列とほぼ同じはずです。
ブラウザでHTMLソースを表示して確認してみてください。
上でもコメントしましたが、ブラウザでHTMLソースを確認してみてください。
ご存知だと思いますが、「<」が「<」、「>」が「>」で表示されるのもブラウザで表示しているからです。
文字コード変換前の文字列をブラウザ表示して確認してみてください。
$str = "<学校><span style=\"color:#FF0000;\">URL</span>"; //utf-8
もSJISになってしまい、
$str = mb_convert_encoding($str, "sjis", "utf-8");
の動作がおかしなことになってしまいますよ。