这个preg_match脚本的问题是什么?

时间:2011-02-02 23:29:18

标签: php regex preg-match

为什么这段代码没有给我任何结果?

if(preg_match('#referer\.php\?url=(.*?)#s',$result,$array2)) { 
    echo $array2[1]; 
}

问题是,如果我将echo $array2[1]更改为echo "test";,它会显示test。所以问题似乎不是preg_match算法,是吗?可能是什么问题?

我想要在url=之后编写的网址,例如referer.php?url=http://www.example.com应该在http://www.example.com中提供$array2

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

尝试以这种方式改变它:

if(preg_match('#referer\.php\?url=(.*)$#s',$result,$array2))

所以print_r($array2)会输出:

Array
(
    [0] => referer.php?url=http://www.example.com
    [1] => http://www.example.com
)

这就是你想要的结果。希望它有所帮助!

答案 1 :(得分:0)

如果您的输入是:<td align="center" width="90%"><b><a target="_blank" href="/referer.php?url=http://www.example.com?somethin=1234">Go to this homepage</a></b>

,你想要http://www.example.com?somethin=1234

你的正则表达式看起来像这样:

/referer\.php\?url=([^"]*)

这会让你的php看起来像这样:

if(preg_match('#/referer\.php\?url=([^"]*)#',$result,$array2)){ 
    print_r($array2);
}