我有一个包含url
的字符串。我试图以最有效的方式从附加文本中提取url
。到目前为止,我一直在使用爆炸,但我必须爆炸两次,然后重建网址。正则表达式不是我主宰的东西,所以我把它排除在外(除非它是最好的解决方案)。有没有办法一步提取网址?
$url = "/url?q=http://www.somesite.com/sites/pages/page?id=1545778&sa=U&ei=EhHLVL_yJcb-yQSZ7oDgAg&ved=0CBMQFjAA&usg";
$strip1 = explode( '&', $url );
$strip2 = explode('=', $strip1[0]);
$result = $strip2[1].'='.$strip2[2];
结果:
http://www.somesite.com/sites/pages/page?id=1545778
答案 0 :(得分:1)
尝试这样:使用 preg_split()
$date = "/url?q=http://www.somesite.com/sites/pages/page?id=1545778&sa=U&ei=EhHLVL_yJcb-yQSZ7oDgAg&ved=0CBMQFjAA&usg";
$t =preg_split("/[=&]/", $date);
echo $t[1]."=".$t[2]; //output: http://www.somesite.com/sites/pages/page?id1545778
答案 1 :(得分:0)
$strip1 = explode( '/url?q=', $url );
使用此正则表达式$ strip1
^((http):\/)?\/?([^:\/\s]+)((\/\w+)*\/)([\w\-\.]+[^#?\s]+)(.*)?(#[\w\-]+)?$
您将在网址
中获得一系列部分答案 2 :(得分:0)
$url = "/url?q=http://www.somesite.com/sites/pages/page?id=1545778&sa=U&ei=EhHLVL_yJcb-yQSZ7oDgAg&ved=0CBMQFjAA&usg";
$result = substr( $url, strpos( $url, '=' ) + 1, strpos( $url, '&' ) - strpos( $url, '=' ) - 1 );
echo $result;
更清洁的两步变化。
$url = "/url?q=http://www.somesite.com/sites/pages/page?id=1545778&sa=U&ei=EhHLVL_yJcb-yQSZ7oDgAg&ved=0CBMQFjAA&usg";
$start = strpos( $url, '=' ) + 1;
$result = substr( $url, $start, strpos( $url, '&' ) - $start );
echo $result;
$url = "/url?q=http://www.somesite.com/sites/pages/page?id=1545778&sa=U&ei=EhHLVL_yJcb-yQSZ7oDgAg&ved=0CBMQFjAA&usg";
$result = preg_replace( '/[^=]*=([^&]*).*/', '${1}', $url );
echo $result;
两者都产生以下输出。
http://www.somesite.com/sites/pages/page?id=1545778
答案 3 :(得分:0)
从技术上讲,URL中的第二个?
应该是URL编码的,但我们可以解决这个问题。使用parse_url获取查询,然后使用str_replace将?
替换为URL编码版本。在此之后,您将拥有一个可以使用parse_str解析的有效查询。
$query = parse_url($url, PHP_URL_QUERY);
$query = str_replace("?", urlencode("?"), $query);
parse_str($query, $params);
echo $params['q'];
// displays http://www.somesite.com/sites/pages/page?id=1545778
答案 4 :(得分:0)
$url = "/url?q=http://www.somesite.com/sites/pages/page?id=1545778&sa=U&ei=EhHLVL_yJcb-yQSZ7oDgAg&ved=0CBMQFjAA&usg";
$strip3 = current(explode('&',end(explode('=', $url,2))));
print_r ($strip3); //output http://www.somesite.com/sites/pages/page?id=1545778