[PHP-users 14517]Re: eregの「Warning:Invalid rangeend」について

Osamu Shigematsu m5issige @ mr.hitachi-medical.co.jp
2003年 4月 8日 (火) 17:48:06 JST


重松です。こんにちは。

> 正規表現エンジンを切り替えることができるとのことですが
> PHPが使ってる正規表現エンジンを調べることはできるので
> しょうか?また、スクリプト内から正規表現エンジンを切り
> 替えることはできますか?

あとから、切り替えることはできないと思います。
# 識者の方のフォローを求む!

調べるには、phpinfo() を実行すると、どういうオプションを
指定したか知ることができますから、結果、どの正規表現エンジンを
使用しているのかも知ることができます。

> > OK と表示されてしまって、期待の結果ではないことが確認
> されると思います。
> 
> 自宅のサーバーで$R = "abcdhttp://:"を入れても
> OKにはなりませんでした。ERRでした。

を。試してないのがバレバレですね。

意図としては、正規表現は、

	1. http://
	2. (
	3. [a-zA-Z0-9@:%_.~#-\?&]+
	4. [a-zA-Z0-9@:%_~#\?&/]+
	5. )
	6. $

にわかれますが、ぱっと見ただけでも、2, 5 の () は意味を成してないですし、
6 で行末には一致するように指定していますが、^ はないので、先頭にゴミが
あっても、マッチしてしまうと思います。

	ゴミhttp://::

だと

	行頭 ゴミ http:// : : 行末
	          1       3 4 6

となって、マッチすると思いますが、これって、期待の動作でしょうか?

# 試してないから、マッチしなかったがごめんなさい。
# でも私の意図は汲めるとはおもいますが。。。

-- 
Osamu Shigematsu <m5issige @ mr.hitachi-medical.co.jp>




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