2009-09-04 10 views
0

私は2つの異なるOSで2つの異なるバージョンのPHPを使用しています。PHP正規表現は異なるバージョンまたは異なるOSで異なる動作をします

1つは5.2.9で、ウィンドウ(ワンプ)で動作します。

CentOS 5(ランプ)で5.2.6が動作しています。

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

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

これはOSの問題であるだろうか?あるいは、PHPが構築された方法と一緒に?

ありがとう、

答えて

1

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

これまでのことが進んでしまうという点を除いて良い解決策はありません。正規表現が歴史的なバージョンで動作する傾向がある最新バージョンを使用すると、逆のことが言えます。

0

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

+0

preg、私は恐れています。 – Dave

関連する問題