[PHP-users 26433] mb_eregi_replaceの置換について

shima tetuo mlmlml @ lily.freemail.ne.jp
2005年 8月 12日 (金) 10:58:12 JST


tetuoです

-----------------------
環境
-----------------------
windows 2000 Server
PHP 4.3.11(ソースはUTF-8)
          ^^^^^^^^^^^^^^^^^

mb_ereg_replaceで、全角かなと全角スペース以外を置換する際に、どうも予期
する結果になりません。

***********
予想する結果
***********
$string = "  a  ";
var_dump(mb_ereg_replace('[^ァ-ヶ ]', '*', $string));

// string(13) "  *  "

***********
現在の状況
***********
$string = "  a  ";
var_dump(mb_ereg_replace('[^ァ-ヶ ]', '*', $string));

// string(9) "*・*・**・*・"


-----------------------
テストコード
-----------------------
<?php
    $string = "  a  ";
    var_dump(mb_ereg_replace('[^0-9 ]', '*', $string));
    // string(13) "  *  "  になります

    $string = "  a  ";
    var_dump(mb_ereg_replace('[^ァ-ヶ ]', '*', $string));
    // string(9) "*・*・**・*・"  になります
?>

************************************
注意:
「string(9) "*・*・**・*・"  になります」の「・」は、表示できない文字だっ
たので、メール作成時に変更して書いています
************************************



-----------------------
分かっている事
-----------------------
ソースをEUC-JPで、上記テストコードを実行すると、期待する

    "  *  "  

になります。
これは、UTF-8固有の問題なのでしょうか?それともmb_ereg_*の問題になるので
しょうか?

分かる方の連絡お待ちしております。




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