2012-02-17 103 views
0

爆數組後:str_replace函數似乎並不與破滅功能工作

$in_list = "'".implode("','",$array)."'"; 

$in_list內容是:

'Robert','Emmanuel','José','Alexander' 

現在,當我嘗試另一個字符串替換的單詞José

str_replace("José","J",$in_list); 

它沒有得到新值,José仍然存在。我錯過了什麼嗎? thanx提前。

回答

1

這應該工作。這取決於你的數組。

$str = array('Robert','Emmanuel','José','Alexander'); 
$str = implode(",", $str); 
print str_replace('José', 'J', $str); 
6

您究竟如何更換字符串? 當試圖這樣:

$in_list = str_replace("José","J",$in_list); 

echo $in_list; 

一切都應該正常工作。

請記住,該函數正在返回一個值。所以它返回一個新的字符串。

+0

我完全是這樣做的,重音的單詞不會被替換,但是,我用正常的單詞(沒有重音)嘗試它,它的工作原理。 – Luca 2012-02-17 09:37:28

+0

請嘗試以下操作:echo ord(「é」);如果值爲233,則使用與我使用的字符相同的字符。也許你有不同的ascii值? – oopbase 2012-02-17 13:10:09

1

我不確定發生了什麼,它似乎對我有用。你使用的是什麼版本的PHP?

$in_list = "'".implode("','", array('Robert', 'Emmanuel', 'José', 'Alexander'))."'"; 
$replaced = str_replace("José", "J", $in_list); 

//prints 'Robert','Emmanuel','J','Alexander' 
echo $replaced; 

參見:http://codepad.viper-7.com/24qutm

1

這爲我工作,但它看起來並不像我在做什麼,你從明顯不同?

$array = array('Robert', 'Emmanuel', 'José', 'Alexander'); 
$in_list = "'".implode("','",$array)."'"; 

echo $in_list.PHP_EOL; 
echo str_replace("José","J",$in_list).PHP_EOL; 

輸出:

'Robert','Emmanuel','José','Alexander' 
'Robert','Emmanuel','J','Alexander' 

記住str_replace將不會$in_list本身進行更換,而是返回包含替換字符串。

希望這會有所幫助!

1

嘗試$in_list = html_entity_decode((str_replace(htmlentities("José"),"J",htmlentities($in_list));

1

您是否嘗試過不上一個重音字?我會說你有一個字符集不匹配,例如$ in_list中的'José'是latin1字符集,而你的PHP源文件是UTF8。

如果是這種情況,您應該先將您的PHP文件或變量轉換爲您要使用的字符集。

1

自發猜測:這兩個字符串是不一樣的。我想一個「José」是你的源代碼硬編碼的字符串,另一個是從數據庫或瀏覽器等收到的。如果兩個字符串的編碼不相同,PHP將不會將它們標識爲相同,並且不會替換該字符。確保您的源代碼文件與您正在處理的數據保存爲相同的編碼,最好都是UTF-8。