2013-08-29 3 views
0

Мне нужна помощь в написании регулярного выражения, чтобы извлечь несколько строк (скажем, 2 поля) из URL.extract string from url

Я действительно хочу сказать здесь , не извлекающий URL из строки.

Позволяет сказать, что мой URL что-то вроде этого:

http:// example.com/conversion/?param1=dhkw121?param2=dhja143&uuid=jsbdwbjb-fwjdbw-wdvvw-wj 

Или тип URL может выглядеть так:

http:// example.com/conversion/param1=dhkw121%uuid=dbjbjbcs-fbsj-fsjbjs-fsj /param2=dhja143 

Из выше URL, я должен извлечь param1 и param2 значения исключительно те, 2 и строки индивидуально.

Я попытался прочитать некоторые вещи, используя регулярное выражение в PHP, но, кажется, это не просто регулярное регулярное выражение, но и более содержательное.

Это то, что я пытался, что-то вроде этого:

.*(param1\=.*param2\=.*)\&?.* 

Я совершенно новый с такого рода сложных извлечений, может ли один помочь мне, пожалуйста?

+0

Какой язык вы используете? –

+0

@AlmaDoMundo Он использует PHP, и он отметил вопрос с помощью [tag: preg-match]. –

+0

Зачем использовать регулярное выражение для этого? Есть 'parse_url()' & 'parse_str()' –

ответ

0

Попробуйте это:

param1=([^&]+).*param2=([^&]+) 

значение param1 будет в 1-й группе и param2 значение в grpup 2.

2

Похоже, что PARAMS только буквенно-цифровые. Если да, то я бы предложил использовать preg_match_all:

preg_match_all("/param[12]=(\w+)/", $url, $results); 

regex101 demo.

Или, если вы хотите, чтобы получить их в качестве элемента 1 и 2 из массива:

preg_match_all("/param1=(\w+).*?param2=(\w+)/", $url, $results); 

regex101 demo.

ideone demo to show array results structure.

+0

Значение параметра может содержать другие символы, чем '\ w' – Toto

+0

hej, Большое вам спасибо, это очистило мой вопрос. добавив к этому, что, если мой param1 что-то вроде этого param1 = fgs-132-242, извините за то, что мои вопросы не были более ясными –

+0

@MahiAntham, знаете ли вы, какие символы могут иметь параметры, или, иначе, символы param не могу иметь? Я не знаю, как составлены URL-адреса, но я мог бы улучшить регулярное выражение на основе этого. – Jerry

0

Это должно удовлетворить ваши потребности:

(param1|param2|anyotherparam)=([^/?&]+) 

Regular expression visualization

Edit live on Debuggex

перебрать матчей:

  • первой группы # 1 содержит имя Парам
  • вторая группа содержит ее значение

Проверьте сами: demo.