[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