str_replace似乎不适用于implode函数

时间:2012-02-17 08:39:31

标签: php

在插入数组之后:

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

$in_list内容为:

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

现在,当我尝试用另一个字符串替换单词José时,

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

它没有获得新值,José仍然存在。我错过了什么吗?提前完成。

7 个答案:

答案 0 :(得分:6)

您是如何尝试更换字符串的? 以这种方式尝试时:

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

echo $in_list;

一切都应该正常。

请记住,该函数返回一个值。所以它返回一个新字符串。

答案 1 :(得分:1)

这应该有效。这取决于你的数组。

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

答案 2 :(得分: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

答案 3 :(得分: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本身执行替换,而是返回包含替换的字符串。

希望这有帮助!

答案 4 :(得分:1)

尝试$in_list = html_entity_decode((str_replace(htmlentities("José"),"J",htmlentities($in_list));

答案 5 :(得分:1)

你试过没有口音的单词吗?我会说你的字符集不匹配,例如$ in_list中的'José'是latin1字符集,而你的PHP源文件是UTF8。

如果是这种情况,您应该首先将PHP文件或变量转换为您要使用的字符集。

答案 6 :(得分:1)

自发猜测:这两个字符串不一样。我想一个“José”是源代码中硬编码的字符串,另一个是从数据库或浏览器中接收的。如果两个字符串的编码不相同,PHP将不会将它们标识为相同而不替换该字符。确保您的源代码文件以与您正在处理的数据相同的编码保存,最好都是UTF-8。