$in_list = "'".implode("','",$array)."'";
$in_list
內容是:
'Robert','Emmanuel','José','Alexander'
現在,當我嘗試另一個字符串替換的單詞José
,
str_replace("José","J",$in_list);
它沒有得到新值,José
仍然存在。我錯過了什麼嗎? thanx提前。
$in_list = "'".implode("','",$array)."'";
$in_list
內容是:
'Robert','Emmanuel','José','Alexander'
現在,當我嘗試另一個字符串替換的單詞José
,
str_replace("José","J",$in_list);
它沒有得到新值,José
仍然存在。我錯過了什麼嗎? thanx提前。
這應該工作。這取決於你的數組。
$str = array('Robert','Emmanuel','José','Alexander');
$str = implode(",", $str);
print str_replace('José', 'J', $str);
您究竟如何更換字符串? 當試圖這樣:
$in_list = str_replace("José","J",$in_list);
echo $in_list;
一切都應該正常工作。
請記住,該函數正在返回一個值。所以它返回一個新的字符串。
我不確定發生了什麼,它似乎對我有用。你使用的是什麼版本的PHP?
$in_list = "'".implode("','", array('Robert', 'Emmanuel', 'José', 'Alexander'))."'";
$replaced = str_replace("José", "J", $in_list);
//prints 'Robert','Emmanuel','J','Alexander'
echo $replaced;
這爲我工作,但它看起來並不像我在做什麼,你從明顯不同?
$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
本身進行更換,而是返回包含替換字符串。
希望這會有所幫助!
嘗試$in_list = html_entity_decode((str_replace(htmlentities("José"),"J",htmlentities($in_list));
您是否嘗試過不上一個重音字?我會說你有一個字符集不匹配,例如$ in_list中的'José'是latin1字符集,而你的PHP源文件是UTF8。
如果是這種情況,您應該先將您的PHP文件或變量轉換爲您要使用的字符集。
自發猜測:這兩個字符串是不一樣的。我想一個「José」是你的源代碼硬編碼的字符串,另一個是從數據庫或瀏覽器等收到的。如果兩個字符串的編碼不相同,PHP將不會將它們標識爲相同,並且不會替換該字符。確保您的源代碼文件與您正在處理的數據保存爲相同的編碼,最好都是UTF-8。
我完全是這樣做的,重音的單詞不會被替換,但是,我用正常的單詞(沒有重音)嘗試它,它的工作原理。 – Luca 2012-02-17 09:37:28
請嘗試以下操作:echo ord(「é」);如果值爲233,則使用與我使用的字符相同的字符。也許你有不同的ascii值? – oopbase 2012-02-17 13:10:09