アーカイブ

  • [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
    タグ: ,
タグ: ‘外字’ の記事