[PHP-users 3426] Re: 全角から半角への変換について
Osamu Shigematsu
php-users@php.gr.jp
Thu, 08 Nov 2001 17:41:43 +0900
重松です。
PHP Version 3.0.15-i18n-jあ で mbereg_replace 使ってますけど?
phpinfo() でもでもってもう一度よく、configure の内容を確認してみては
どうですか?
ちなみに私のはこういう状態です。
./configure
'--with-pgsql'
'--enable-track-vars'
'--with-apxs=/usr/local/apache/bin/apxs'
'--enable-i18n'
'--enable-mbregex'
'--enable-versioning'
'--enable-trans-sid'
でもって、どうしても、mbereg が使えない、ってことでしたら、強引な方法ですが、
'^'. // 行頭から
'\('.
'('.
'[EUC 1 バイト文字の 1 バイト目の範囲]'. // 1 バイトの文字
'|'.
'[EUC 2 バイト文字の 1 バイト目の範囲].'. // 2 バイトの文字
')'.
'*'. // が 0 個以上スキップして
'\)'.
'\('
'マッチさせたい文字'.
'\)'
ってな正規表現で、マルチバイト文字の分割を防止できるのではないかと。。。
# 試してないですけど、うまくいったら教えてください。
あるいは、
$txt = preg_split ('/([ -~]+)/', $txt, -1,
PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
とかすると、配列にいわゆる全角・半角を交互につっこんでくれますから、
全角の部分だけちまちま処理すれば、良いのではないかと。。。
王道は、いうまでもなく、mbereg() が使えない理由を調べて使えるようにすること
だと思います。
--
Osamu Shigematsu
http://www.ravi.ne.jp/%7eshige/
mailto:shige@ravi.ne.jp