RegEx从另一个网址中获取url

时间:2012-06-11 01:00:44

标签: php regex url urlencode

要从中提取的字符串: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

以前使用的RegEx:www\..*?\.\w{2,5}

但是,如果具有“www”,则上述RegEx将仅获取URL。在里面。如果我拿出“www。” RegEx它只是抓住了c.ypcdn.com。我想在字符串的末尾抓住Cleanation.com。

需要动态,以便它可以抓取任何没有“www”的网址。超出那个网址。

2 个答案:

答案 0 :(得分:3)

为什么不在返回的query索引上使用parse_url()然后parse_str()来获取它?

编辑:示例:

$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'];

答案 1 :(得分:0)

如果这始终是dest参数,您可以使用以下内容获取它:

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

如果它离开最后一个参数,你可以用:

抓住它
"dest=https?%3A%2F%2F(.+)$"