[PHP-users 7091] preg_match()の正規表現でURLを抽出したい

Shinichi Moritani php-users@php.gr.jp
Tue, 23 Apr 2002 18:39:52 +0900


こんにちは。森谷です。

preg_match()を使って、正規表現でURLを抽出したいのですが、
一部旨く行きません。

文字列 $buffer の中から URL を抽出したいので、

$buffer = "対象URLは http://www.hogehoge.com/hoge.php?hoge=hogehoge です";
$http_URL_regex = "(s?https?:\/\/[-_.!~*'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)";
preg_match("/$http_URL_regex/", $buffer, $url);
echo $url[1];

とすると、実行結果は、

http://www.hogehoge.com/hoge.php

となります。

http://www.hogehoge.com/hoge.php?hoge=hogehoge

を抽出したいのですが、「?」が入ると抽出できません。
$http_URL_regex = "(s?https?:\/\/[-_.!~*'()a-zA-Z0-9;\/\?:\@&=+\$,%#]+)"
でもだめです。

Perlメモ http://www.din.or.jp/~ohzaki/perl.htm#httpURL より
参照させて頂いた正規表現なので、Perl では抽出できるようなのですが、
preg_match() では旨く行きません。

どこが悪いかご指摘お願いします。
(過去ログにも見当たりませんでした)


環境は、レンタルサーバで、
OS:IRIX(unix)v6.5.1
Apache1.3.20
PHP4.0.6
です。


***************************
 Name : Shinichi Moritani
 Mail : ml@moritani.com
***************************