2012-10-07 98 views
1

我試圖替換CodeIgniter中具有特定參數的URL。這並不是說CI應該重要,因爲我有最好的部分工作。多個str_replace?

比方說我的網址是:

?device=field1-field2_field3+field4 

通過呼應了$ devicelink2應該顯示:

field1 field2.field3*field4 

目前它與一切,但更換+。出於某種原因,它會用空格替換+。

但是我不能使用下面的代碼得到這個工作。有任何想法嗎?

$device = $this->input->get('device'); 
    $devicelink = str_replace("-"," ",$device); 
    $devicelink1 = str_replace("_",".",$devicelink); 
    $devicelink2 = str_replace("+","*",$devicelink1); 
+0

是「無法得到它的工作」最好的,你可以做什麼來描述你的問題?如果您希望答案中的細節水平相同,那麼答案是,「您需要修復它」。 –

+0

是的好吧,正在編輯它,因爲你知道我沒有描述我的實際問題 – K20GH

+0

什麼'echo $ this-> input-> get('device');'yield? 'FIELD1-field2_field3 + field4'?然後你嘗試了echo str_replace(array(' - ','_','+'),array('','。','*'),$ this-> input-> get('device') );'? – Thomas

回答

5

在查詢字符串+實際上代表空格字符,所以用這個(很奇怪)查詢字符串:

?device=field1-field2_field3+field4 

$this->input->get('device')等於field1-field2_field3 field4

要回答你的字面問題如何這種精確的查詢字符串得到你想要的輸出:

$device = $this->input->get('device'); 
$devicelink = str_replace(" ", "*", $device); 
$devicelink1 = str_replace("_", ".", $devicelink); 
$devicelink2 = str_replace("-", " ", $devicelink1); 

或者:

$devicelink2 = str_replace(array(' ', '_', '-'), array('*', '.', ' '), $device); 

如果您有剛剛獲得這些字符轉換成原來的查詢字符串的麻煩,只要確保妥爲編碼:

?device=field1+field2.field3%2Afield4 

見PHP的本地urlencode功能幫助本:http://php.net/manual/en/function.urlencode.php

+0

謝謝你會給它一個鏡頭。瞭解它的奇怪之處,但是我需要一種方法來區分空間,hypen,點和&符號,因爲我無法在網址中使用點或&符號,因此使用_和+代替 – K20GH

+0

爲什麼你不能在URL中使用點或&符號?請記住,您在URL中看到的內容是簡單編碼的,您應該可以使用您需要的任何值。 –

+0

我認爲最好的做法是不要在網址中的字符串中使用點或&符。比如我的一些可能是網頁?設備=三星-AT&T-星系-S-II-暴漲或頁面?設備=三星銀河標籤 - 10.1 – K20GH

0

試試這個:

$search = array('-', '_', '+'); 
$replace = array(' ', '.', '*'); 
$subject = $this->input->get('device'); 

$deviceLink = str_replace($search, $replace, $subject); 
0

str_replace很好地接受數組。 str_replace(數組('她','愛','我'),數組('他','恨','你'),'她不愛你');

str_replace將返回「他恨你不是你」。 (可怕的例子吧?)。

如果您輸入一個數組來搜索並替換一個字符串,它將用乾草堆中的給定字符串替換所有數組值。

或者,如果您輸入2個數組中元素數相同的數組,則來自'search'數組的元素將被其各自的替換值替換。數組(' - ','_','+'),數組('','。','*'),$ device); $ DEVICLINK = str_replace