preg_match - извлечение строки из URL - PullRequest
0 голосов
/ 17 января 2011

У меня есть такой URL-адрес:

http://localhost/adminator/index.php?section=1portal&tool=2firmy и http://localhost/adminator/index.php?section=1portal&tool=2firmy&passedID=26

, и я хочу иметь возможность извлечь параметры SECTION и TOOL.

Я придумал это:

preg_match('/(.*)(section=)(.*)(&tool=)(.*)/', $_SERVER['HTTP_REFERER'], $matchesarray);
echo $section = $matchesarray[3].'<br />';
echo $tool = $matchesarray[5];

Но это работает только для первого URL, а не второго, и чем у меня это:

preg_match('/(.*)(section=)(.*)(&tool=)(.*)(&)(.*)/', $_SERVER['HTTP_REFERER'], $matchesarray);
echo $section = $matchesarray[3].'<br />';
echo $tool = $matchesarray[5];

Иэто работает только для второго URL, а не для первого.

Как я могу заставить его работать в обоих случаях?Благодаря.

Ответы [ 3 ]

1 голос
/ 17 января 2011
$url = 'http://localhost/adminator/index.php?section=1portal&tool=2firmy&passedID=26';
$url = parse_url($url, PHP_URL_QUERY);
parse_str($url, $output);
echo $output['section']; // 1portal
echo $output['tool']; // 2firmy
0 голосов
/ 17 января 2011

'section=(.+?).*?&tool=(.+?)' должно работать, затем проверьте группы 1 и 2 на значение

0 голосов
/ 17 января 2011

Разве вы не можете просто использовать $ _GET ['section'] и $ _GET ['tool']?

...