В чем проблема с этим сценарием preg_match? - PullRequest
1 голос
/ 03 февраля 2011

Почему этот код не дает мне никаких результатов?

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

Дело в том, что если я поменяю echo $array2[1] на echo "test";, это покажет мне test. Так что проблема не в алгоритме preg_match, не так ли? В чем может быть проблема?

Я хочу получить URL, который пишется после url=, например, referer.php?url=http://www.example.com должен дать http://www.example.com как результат в $array2.

Спасибо за вашу помощь!

Ответы [ 2 ]

1 голос
/ 03 февраля 2011

попробуйте изменить его следующим образом:

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
)

, то есть желаемый результат.Надеюсь, это поможет!

0 голосов
/ 03 февраля 2011

, если вы введете: <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);
}
...