0

2 つの異なる OS で 2 つの異なるバージョンの php を使用しています。

1 つは、Windows (wamp) で実行されている 5.2.9 です。

1 つは、CentOS 5 (ランプ) で実行されている 5.2.6 です。

グループ名を含む正規表現は、Windows では機能しますが、CentOS では機能しません。

そのような例は/^field_(?<myname>.+)/

これはOSの問題ですか?それとも、PHP のビルド方法に関係するものですか?

ありがとう、

4

2 に答える 2

1

PHP で利用可能なほとんどの正規表現関数は、libpcre に由来します。このライブラリは、いくつかのセキュリティ問題に対応して、数年間激動の歴史を持っています。これらの問題の修正により、セマンティクスが変更されます。デフォルトで PHP をビルドするときは、バンドルされている libpcre を使用します。それが変更されると、変更ログhttp://www.php.net/ChangeLog-5.phpに記録されます。ディストリビューションによっては、または自分でコンパイルした場合、php がそのバージョンのセマンティクスを持つ外部 libpcre を使用することがあります。

つまり、正規表現が最新バージョンで動作する場合、過去のバージョンで動作する傾向があり、逆は、私が指摘したように、真実ではありません。

于 2009-09-04T03:39:02.283 に答える
0

どの正規表現関数を使用していますか? PHP にはeregpregがあり、 preg 正規表現は perls 正規表現のように動作し、すべての OS で同じように動作するはずです。

于 2009-09-04T03:27:13.453 に答える