PHPで置換できなかったのは文字コードのせいだった
phpでhtmlを読み込んで内容の一部を置換したあと、別ファイルとして保存したかったんだけど、str_replaceで置換ができず悩んでた。
原因としては phpとhtmlの文字コードが違っていたためphpで文字コードを合わせる必要があった。
phpはUTF-8で、読み込む&書き出すhtmlはShift-JIS。
なのでstr_replaceの前に置換指定の文字列をShift-JISに変換する必要があった。mb_convert_encoding でShift-JISに変換したら置換できた。
<いきなり置換しようとしてNGだった例>
$str ; // html(Shift-JIS)を読み込んだ文字列
$beforeword = ‘置換前の文字’;
$afterword = ‘置換後の文字’;
str_replace( $beforeword, $afterword, $str );
<文字コード変換したら置換できた>
$str
$beforeword = mb_convert_encoding(‘置換前の文字’,’SJIS’,’UTF-8′);
$afterword = mb_convert_encoding(‘置換後の文字’,’SJIS’,’UTF-8′);
str_replace( $beforeword, $afterword, $str );
ググってもこんな基礎的なことでつまづく人はいないらしく、検索にヒットしなかったなぁ。