2014-01-05 90 views
2

我在控制器的一個方法,它接受幾個參數:如何通過codeigniter中的URL將空間參數傳遞給控制器​​?

public function api(){ 
    $url_params = $this->uri->segment_array(); 

    //... 
} 

,這是例如URL的:

http://testsite.com/services/api/invite-businesses/contact_name/_testing/message/some%20message/url/some_URL/ 

所以我的陣列看起來像:

array(10) { 
    [1]=> 
    string(8) "services" 
    [2]=> 
    string(3) "api" 
    [3]=> 
    string(17) "invite-businesses" 
    [4]=> 
    string(12) "contact_name" 
    [5]=> 
    string(12) "_testing" 
    [6]=> 
    string(7) "message" 
    [7]=> 
    string(14) "some%20message" 
    [8]=> 
    string(3) "url" 
    [9]=> 
    string(4) "some_URL" 
} 

你可以看到該參數之一有空間:some%20message

但我想要得到真正的價值,a.e. some message。該值可能包含URL轉換爲%xx的任何其他字符。

如何獲得實物價格

+4

查找功能'urldecode()'和'urlencode()' – safarov

+0

謝謝你隊友,我得到了2個答案,反正你是第一個很高興能夠upvode並接受你的答案 – snaggs

+0

好奇,你將它用於** API **,但爲什麼不在URL中使用幾個元素,在POST中使用其他元素?會消除像你的'消息'有空間的東西。 – Jakub

回答

3

使用urldecode()解碼串

... 
$url_params = $this->uri->segment_array(); 
foreach($url_params as &$param) { 
    $param = urldecode($param); 
} 
... 
2

您可以嘗試urldecode

echo urldecode("some%20message"); 

這將返回 「一些信息」

相關問題