Я пытаюсь извлечь параметры URL с помощью regex, и я очень близок к тому, чтобы заставить его работать. Я даже знаю, в чем проблема: мое регулярное выражение спотыкается о повторных группах захвата. Но я просто не могу понять, как это исправить.
Язык – это PHP.
Мой URL-адрес выглядит примерно так, как показано ниже. Он не может иметь никаких параметров, только один или несколько:
member.php?action=bla&arg=2&test=15&schedule=16
Мое регулярное выражение выглядит так:
member\.php((?:[\?|&](\w*)=(\w*))*)
И мои группы захвата оказываются:
1. action=bla&arg=2&test=15&schedule=16 2. schedule 3. 16
Я не могу понять, как фиксировать все параметры по отдельности. Должен ли я просто согласиться на первую группу захвата и сам ее взорвать? Для моих целей было бы намного более изящным, если бы я мог выполнять всю работу внутри одного регулярного выражения.
try: <?php $str="member.php?action=bla&arg=2&test=15&schedule=16#test"; preg_match_all('/([^?&=#]+)=([^&#]*)/',$str,$m); print_r($m); //combine the keys and values onto an assoc array $data=array_combine( $m[1], $m[2]); print_r($data); ?>
Вы пробовали parse_url
и parse_str
?
Извлечь параметры и их значения с помощью-> &[\w]*=[\d]*