2016-08-11 65 views
0

獲取參數我有這個網址:PHP:從編碼的URL

/?goto=%2Fr%2Faccount%2Findex%2Ecfm%3Fsite_id%3D87211 

如何從這個網址我GET SITE_ID?在URL功能使用rawurldecode

+1

你是什麼意思「有這個網址「?您是否在字符串變量中包含該文本,還是用於訪問PHP腳本的URL? – melpomene

回答

-1

如果你知道你的網址永遠是在這個結構中,你可以用正則表達式,像這樣解析出來:

$url = '/?goto=%2Fr%2Faccount%2Findex%2Ecfm%3Fsite_id%3D87211'; 
preg_match('/site_id\%3D(\d+)/', $url, $matches); 
$siteId = $matches[1]; 

它尋找任何匹配site_id%3D和後面的數值。通過使用$ _GET [ '轉到']

+1

$ url = $ _SERVER [「HTTP_HOST」]。 $ _SERVER [ 「REQUEST_URI」];作品,謝謝! – Shin

+0

這是非常可怕的代碼。 '\%'是多餘的,因爲'%'不是一個正則表達式元字符。如果另一個查詢參數以'xyz_size_id'結尾(或者路徑包含'site_id ='),它將返回錯誤的字符串。它還假定site_id只包含數字,並且沒有任何數字是url編碼的。 – melpomene

0

嘗試在$_GET['goto']parse_strparse_url

parse_str(parse_url($_GET['goto'], PHP_URL_QUERY), $params); 
$site_id = $params['site_id']; 
+0

我真的很想知道爲什麼這個答案是downvoted。 – melpomene

+0

可能是因爲我誤解他在$ _GET ['goto']中只有一個查詢字符串,所以我忘了添加一個parse_url來提取只查詢字符串。 (剛剛修復) – Naomi

-1

,你會得到以下網址:

/r/account/index.cfm?site_id=87211 

試試這個

$uri = $_GET['goto']; 
    $site = explode("=", $uri); 
    echo $site[1]; 
1

檢查這種方式,

<?php 
    $abc ="/?goto=%2Fr%2Faccount%2Findex%2Ecfm%3Fsite_id%3D87211"; 

    $test = parse_url($abc); 
    $test = urldecode($test["query"]); 

    $url = parse_url($test);  
    parse_str($url['query'], $param); 
    print_r($param["site_id"]); 

    ?> 

檢查你的輸出在這裏:https://eval.in/621360