[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;
}
lCuOLO
2010年 3月 2日 | Posted in PHP
タグ: ,
まだコメントはありません。

コメントする

XHTML: 使用可能タグ: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt="">