2011-01-16 6 views
0

У меня, как это URL,:preg_match - извлечение строки из URL

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

, и я хочу, чтобы иметь возможность извлечь РАЗДЕЛ и инструментальные параметры.

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

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, а не первый.

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

+0

Почему бы вам не использовать $ _SERVER [ 'QUERY_STRING'] для получения параметров? или $ _GET ['section'] – miqbal

ответ

1
$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

Это работает, спасибо! – Mike

0

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

+0

Это от вызова AJAX, поэтому я не могу. – Mike

0

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

+0

Предупреждение: preg_match() [function.preg-match]: разделитель не должен быть буквенно-цифровым или обратным слэшем в C: \ wamp \ www \ adminator \ scripts \ it-editWindow.php в строке 31 - вот что он говорит, когда я использую ваш код =/ – Mike

Смежные вопросы