[PHP-users 34592] Re: 変換不能文字の数値エンティティ化

Yoshiaki Yanagimoto yanagimoto @ ask-art.jp
2009年 5月 27日 (水) 17:21:33 JST


柳本です。

mb_substitute_character("long");
これとpreg_replace()あたりでどうですか?

clicker @ fooo.cjb.net さんは書きました:
> 初めまして武山と申します。
> 
> mb_convert_encodingで変換することができない文字は、
> mb_substitute_characterで設定された文字へ変換されますが、
> これを固定の文字ではなく、HTML数値エンティティ表現にできる方法を
> ご存知の方、いらっしゃいませんでしょうか。
> 
> 現在、以下のように行っているのですが、どうしても変換不能文字が
> 出てきてしまいます。
> 
> $convmap = array(
>     //0x0000, 0x007F, 0, 0xffff,  // 基本ラテン文字 (ASCII互換)
>     0x0080, 0x00FF, 0, 0xffff,  // ラテン1補助
>     0x0100, 0x017F, 0, 0xffff,  // ラテン文字拡張A
>          : (長いので省略 参考→http://ja.wikipedia.org/wiki/Unicode)
> );
> $text = mb_encode_numericentity($text, $convmap);
> $text = mb_convert_encoding($text, 'SJIS-win', 'UTF-8');
> 
> なお、携帯向けのコンテンツのためShiftJISへ変換しています。
> SEO的なところを考慮して、可能な限り数値エンティティではないSJIS文字を
> 出力したいと考えています。
> 
> また携帯電話が全てのunicode数値エンティティを表示できるわけではない
> ことは了承しております。アラビア語とかは無理でもカフェのeは表示してあげて、
> さらにハングル文字なら対応機種だけで表示できれば良いという考えです。
> 
> ---
> 武山
> clicker @ fooo.cjb.net
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3
> 



PHP-users メーリングリストの案内