アーカイブ
-
[PHP]外字の削除
昔作った記憶があるのだけど、どこかに失踪してしまったのでメモメモ。
ポイントは下記の1行。mb_substitute_character("none");あんまり自信ないので、おかしなところがあれば、ご指摘よろしくお願いします。
#--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*-- # 外字の撲滅 #--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*-- function deleteExternalFontsChar( $str ){ #--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-- # 戻り値の初期化 $returnValue = $str; #--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-- # 現在のmb系関数の設定状況をバックアップ $bk_mb_language = mb_language(); $bk_mb_substitute_character = mb_substitute_character(); $bk_mb_internal_encoding = mb_internal_encoding(); $bk_mb_regex_encoding = mb_regex_encoding(); #--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-- # 日本語環境設定 mb_language("ja"); mb_internal_encoding("eucJP-win"); mb_regex_encoding(mb_internal_encoding()); #--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-- # 入力文字エンコーディングが無効、 # または出力文字エンコーディングに文字コードが存在しない場合の代替文字を指定(none:出力しない) mb_substitute_character("none"); #--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-- # まずは、処理対象の文字列を、現在のエンコードに合わせる $returnValue = @mb_convert_encoding( $returnValue, mb_internal_encoding(), $bk_mb_internal_encoding ); #--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-- # ざくっと外字撲滅 $returnValue = @mb_convert_encoding( $returnValue, "EUC-JP", mb_internal_encoding() ); $returnValue = @mb_convert_encoding( $returnValue, mb_internal_encoding(), "EUC-JP" ); #--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-- # 最後に、元の文字列エンコードに戻す $returnValue = @mb_convert_encoding( $returnValue, $bk_mb_internal_encoding, mb_internal_encoding() ); #--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-- # mb系関数の設定状況をバックアップを復元 mb_language($bk_mb_language); mb_substitute_character($bk_mb_substitute_character); mb_internal_encoding($bk_mb_internal_encoding); mb_regex_encoding($bk_mb_regex_encoding); #--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-- # ここで処理終了 return $returnValue; }2010年 3月 2日 | Filed under PHP