[PHP-users 2767] Re: [Q]関数[Strtr()] での文字化け

f.t. php-users@php.gr.jp
Tue, 16 Oct 2001 20:37:45 +0900


fujiyamaです。

半分便乗しますが,,,

On Tue, 16 Oct 2001 18:27:39 +0900
水迫清仁 <mizusako@southwave.co.jp> wrote:

>   PHP 4.0.5
>   APACHE 1.3.20

>  現象発生例
> <html>
> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
> <body>
> <?
>   $input_str = "法規";
>                   ↓全角空白
>   $trans_str = Strtr($input_str, " "," ");
>   $trim_str  = Trim($trans_str);

> 以上のようにすると結果として、
> input_str->法規
> trans_str->迷規
> trim_str ->迷規
> 

strtr()がマルチバイト文字での動作を保証していないならば、
法→cba1
(全角空白)→a1a1→strtr()では半角スペースの長さに合わせてa1

で、おかしな動作をしそうなことは見当つきますが、
なんで迷(ccc2)なんでしょう??

> 現在は、上記の文字の回避用に
>                 ↓全角空白
>   $trans_str = ereg_replace(" "," ",$input_str);
> 以上のような関数を使用しています。
> 
> しかし、これも正しいのどうかもわかりません。

ereg_replace()はcba1を調べるはずなので問題ないんじゃないでしょうか。



いつもご迷惑かけます。 
f.t. <fujiyama@pc.mycom.co.jp>