PHP:SJIS環境での全角空白(スペース)削除
今日はSJIS環境でで全角空白(スペース)対応の除去関数を作っていたら、謎の挙動が・・・ 「あ」や「!(全角)」を通すとおかしな挙動になる。 これはきっと文字コードを宣言してないからかな~と言う事で宣言後に処理。 mb_regex_encoding("SJIS"); // 改行コードを削除 $str = mb_ereg_replace("/[\r\n]/", "", $str); // 行頭行末の空白を削除 $str = mb_ereg_replace("^[ ]+", "", $str); $str = mb_ereg_replace("[ ]+$", "", $str); こんな感じ。 これで「あ」や「!」の挙動は直ったのですが、機種依存文字は全然ダメぽ・・・ ぬーん・・・とうなっていると、現場の先輩が「SJIS-win」だとどう?とのアドバイス。 へ?「SJIS-win」とか文字コードの宣言あるの? 試しに mb_regex_encoding("SJIS-win"); と修正し実行。 w( ̄△ ̄;)wおおっ! 機種依存文字も問題なくなりました。 こんな宣言できたのか! ちなみに全角スペースを半角スペースに置き換える場合はこんな感じ。 $str = mb_convert_kana($str, "KVs","SJIS-win"); $str = mb_convert_kana($str, "s","SJIS-win"); (半角カタカナ>全角カタカナ処理も入ってました・・・sだけでいいはずです) この後にtrim()でも通せば問題ないかな。 今週は本気でSJISがこの世から無くなってほしいと思いましたw