[PHP-dev 847]Re: php-4.3.3RC3+libmbfl+onigurumaテスト版

Rui Hirokawa rui_hirokawa @ ybb.ne.jp
2003年 8月 16日 (土) 11:32:10 JST


廣川です。

非互換の部分についてはこのML等で今後議論していくべき問題です。
鬼車自体が開発途上ということもあり、今後の機能拡張の方向性も
ふまえ、安定しかつ、高機能なものを選択していくことになるでしょう。

鬼車では、正規表現の構文を複数サポートしています。
php_mbregexで使用しているデフォルトの正規表現構文はRubyのものですが、
mb_regex_set_options()で変更でき、以下のようになっています。

'j': REG_SYNTAX_JAVA
'u': REG_SYNTAX_GNU_REGEX
'g': REG_SYNTAX_GREP
'c': REG_SYNTAX_EMACS
'r': REG_SYNTAX_RUBY (default)
'z': REG_SYNTAX_PERL
'b': REG_SYNTAX_POSIX_BASIC
'd': REG_SYNTAX_POSIX_EXTENDED

例えば、以下のようにすると以前の動作に近くなるのではないでしょうか?

<?php
 mb_regex_set_options('d'); // default: 'r'
 echo mb_ereg_replace( "[ -/:-@[-`{-~]", "", "hoge[-]hoge" );
 echo mb_ereg_replace( "[ -/:-@\\[-`{-~]", "", "hoge[-]hoge" );
?>

デフォルトの構文をどうするかは、意見が分かれるところかもしれません。
私は、REG_SYNTAX_POSIX_EXTENDEDがデフォルトの方が移行は楽なような
気がします。また、REG_SYNTAX_RUBY をデフォルトにし、

mbstring.default_regex_syntax = 'd'

のような命令でphp.iniにおいてデフォルト設定を変えられるようにするのも
ありだと思います。

On Fri, 15 Aug 2003 12:05:25 +0900
Seiji Masugata <s.masugata @ digicom.dnp.co.jp> wrote:

> こんにちわ、桝形です。
> 
> Subject: [PHP-dev 845] mbfilter/mbregexのライセンス問題に関するまとめ
> 
> の件、お疲れ様です。
> 
> 遅ればせながら、ようやくPHP4-4.3.3RC3-libmbfl-onigurumaのテストに
> 手をつけられるようになりました。
> 
> パッチの提供、どうもありがとうございます。
> 
> FreeBSD/Linux共にインストールが行えたので、Linuxの方で軽く動かして
> みて、気になった点を報告させて頂きます。
> 
> test.php:
> <?
> echo mb_ereg_replace( "[ -/:-@[-`{-~]", "", "hoge[-]hoge" );
> echo mb_ereg_replace( "[ -/:-@\\[-`{-~]", "", "hoge[-]hoge" );
> 
> // 半角記号文字
> //  (20)〜/(2F)
> // :(3A)〜@(40)
> // [(5B)〜`(60)
> // {(7B)〜~(7E)
> ?>
> 
> Warning: mb_ereg_replace(): mbregex compile err: premature end of char-class in /XXX/XXX/XXX/XXX/XXX/test.php on line 2
> 
> 上記の様なスクリプトで、ワーニングが出るようになりました。
> 従来のPHP4.3.3RC3に戻すと、ワーニングは出ません。
> 
> Subject: [PHP-dev 832] Re: FYI:mbstring+鬼車 参考実装
> 
> で、小迫さんが、
> 
> > 非互換で最も大きいものは、
> > 文字クラスの中でjava.util.regexの集合演算子([..], &&)を使用できるように
> > したことと関連しているのですが、文字クラス中で[, -, ]の三文字を文字として
> > 指定するときには、\でエスケープする必要があります。
> 
> と、あり、恐らく非互換にあたるもの。。。と解釈しました。
> 
> で、今後の方向性について確認なのですが、mbregex(oniguruma)
> ライブラリでは、非互換の部分については、そもそもエンジンが
> 違うので、ライブラリ内部ではカバーしないというスタンスで
> いくのでしょうか?
> 
> バージョンUP時に屍の山が見えてきそうダ。。。
> 
> --
> Seiji Masugata<s.masugata @ digicom.dnp.co.jp>


-- 
Rui Hirokawa <rui_hirokawa @ ybb.ne.jp>


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