2012-06-11 3 views
1

строки, чтобы вытащить из: http:\/\/c.ypcdn.com\/2\/c\/rtd?vrid=357c99c36bd7ed631eda2e43fc9e30f8&rid=283d465f-f63b-4b0d-90b0-be6c12ed7617&ptid=943aw4l8qj&ypid=11720135&lid=194823099&tl=6&lsrc=SP&dest=http%3A%2F%2FCleanation.comRegEx, чтобы захватить URL из другого URL

RegEx Я использовал раньше: www\..*?\.\w{2,5}

Однако выше RegEx будет только захватить URL, если он имеет «WWW». в этом. Если я выберу «www». RegEx он просто захватывает c.ypcdn.com. Я хочу захватить Cleanation.com в конце строки.

Нужно быть динамичным, чтобы он мог захватить любой URL-адрес, который не имеет «www». из этого URL.

+0

Всегда ли это параметр «dest»? – kale

+0

Возможный дубликат [Как получить переменную в URL-адресе, но когда URL-адрес сохраняется в переменной PHP?] (Http://stackoverflow.com/questions/8156283/how-do-i-get-a- переменная-в-url-but-when-the-url-is-saved-in-a-php-variable) – nickb

ответ

3

Почему бы не использовать parse_url(), а затем parse_str() по возвращенному query индексу, чтобы получить его?

редактировать: пример:

$url= "http://c.ypcdn.com/2/c/rtd?vrid=357c99c36bd7ed631eda2e43fc9e30f8&rid=283d465f-f63b-4b0d-90b0-be6c12ed7617&ptid=943aw4l8qj&ypid=11720135&lid=194823099&tl=6&lsrc=SP&dest=http%3A%2F%2FCleanation.com"; 
$query = parse_url($url, PHP_URL_QUERY); 
parse_str($query,$params); 
echo $params['dest']; 
+0

Wow, который работает намного лучше. Благодарю. Я все еще очень новичок в PHP. – avoliva

0

Если это всегда параметр dest, вы можете захватить его с чем-то вроде:

"dest=https?%3A%2F%2F([^?&]+?)" 

если его сувенирной последний параметр, вы можете взять его с :

"dest=https?%3A%2F%2F(.+)$" 
Смежные вопросы