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