[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 メーリングリストの案内