[PHP-users 4494] Re: マルチバイトによる ereg_replace
Osamu Shigematsu
php-users@php.gr.jp
Thu, 27 Dec 2001 15:11:44 +0900
重松です。
on 01.12.27 2:51 PM, koni-san at koni3@capella.freemail.ne.jp wrote:
> mbereg_replaceなのですがconfigureのオプション、または
> php.iniの設定のため定義されていないんです。
> ごめんなさい(´〜`;)
>
> いろいろと模索中ですので、いただいたアドバイス慎重に試し、
> その後、返答したいと考えています
二つの原因があると思います。
一つは、マルチバイト文字を使うといっているにもかかわらず、
シングルバイト文字用の正規表現関数を使用している点。
これは、藤田さんが指摘済み。インストールしましょう。
もう一つは、スクリプトを記述している文字コードと、
php.ini だとか、.htaccess での設定との問題。
今回は、SJIS だと 2 バイト目に [ が来て、それとが閉じられてないから、
正規表現のコンパイルに失敗している、たったそれだけのことでは??
[shige@Dronjo shige]$ qkc -s test.php
Converted: test.php (EUC to Shift-JIS)
[shige@Dronjo shige]$ php -q test.php
<br>
<b>Warning</b>: REG_EBRACK in <b>/home/shige/test.php</b> on line
<b>2</b><br>
[shige@Dronjo shige]$ od -ta test.php
0000000 < ? p h p nl e c h o sp e r e g i
0000020 _ r e p l a c e ( " etx ht soh [ etx soh
0000040 etx dc3 " , " stx $ stx G stx q " , " etx ht
0000060 soh [ etx soh etx dc3 dc1 e cr D stx + \ n " )
0000100 ; nl ? > nl
0000105
[shige@Dronjo shige]$ qkc -e test.php
Converted: test.php (Shift-JIS to EUC)
[shige@Dronjo shige]$ php -q test.php
うどん大好き
[shige@Dronjo shige]$ cat test.php
<?php
echo eregi_replace("ラーメン","うどん","ラーメン大好き\n");
?>
[shige@Dronjo shige]$
--
Osamu Shigematsu
http://www.ravi.ne.jp/%7eshige/
mailto:shige@ravi.ne.jp