2016-08-03 2 views
0

У меня есть код ниже: -PHP, чтобы получить элемент из ссылки

$link = 'http://www.domain.com/go.php?id=545&url=http://www.example.com/about 

Я хочу URL элемент, - http://www.example.com/about

+0

Могу ли я предложить вам UrlEncode параметры строки запроса? Таким образом, вы можете использовать ['parse_str'] (http://php.net/manual/en/function.parse-str.php), однако это может не сработать, когда у вас нет действительного URL-адреса. – apokryfos

ответ

1
$link = 'http://www.domain.com/go.php?id=545&url=http://www.example.com/about'; 

$url = explode("&url=", $link)[1]; 
echo $url; //http://www.example.com/about 
+2

это не будет работать должным образом, когда 'url' не является последним параметром строки запроса – billyonecan

0

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

$link = 'http://www.domain.com/go.php?id=545&url=http://www.example.com/about'; 
$uri=explode("url=",$link); 
$uri=$uri[count($uri)-1]; 

echo $uri; 
2

You может использовать встроенные PHP parse_url и parse_str functio нс.

$link = 'http://www.domain.com/go.php?id=545&url=http://www.example.com/about'; 
parse_str(parse_url($link,PHP_URL_QUERY),$url); 
echo $url['url']; 
+0

, это вернет всю строку запроса, поэтому требуется дополнительный синтаксический анализ – billyonecan

+0

@billyonecan. Я должен был проверить его. –

0
function getSomething($url) { 
    if (!(strpos($url, 'url=') !== false)) return false; 
    $parse = explode('url=', $url); 
    $code = $parse[1]; 
    return $code; 
} 

echo getSomething("http://www.domain.com/go.php?id=545&url=http://www.example.com/about"); 
0

это будет работать, даже если URL помещается где-то еще в качестве параметра

$link = 'http://www.domain.com/go.php?id=545&url=http://www.example.com/about'; 
$url = ""; 
$params = explode("&", $link); 
for($params as $param){ 
    if(substr($param, 0, 4) === 'url='){ 
     $url = explode("=", $param)[1]; 
     break; 
    } 
} 
echo $url; //http://www.example.com/about 
Смежные вопросы