str_replace()不会替换中文字符串中的needle

时间:2013-09-27 14:35:58

标签: php encoding character-encoding str-replace

我的网站中有几种语言,但下面的代码不适用于中文。屏幕上出现所有其他文本,因此输出没有问题。我想知道str_replace()在中文文本中使用时是否对%s过敏!只替换%s不起作用。

注意:%(任何字符无关紧要)都不起作用。

知道为什么吗?

由于

$lang = "%s的字段是必需的。";
echo $message = str_replace('%s', '123', $lang);
//Should output 123的字段是必需的。but instead %s的字段是必需的。appears again.
echo $message = str_replace('的字段是必需的', '123', $lang);
//This outputs %s123. which is fine

1 个答案:

答案 0 :(得分:6)

您的%不是“正确的”%。看看这个:

$lang = '%s的字段是必需的。';

而不是

$lang = '%s的字段是必需的。';

如果你仔细观察这两个,你会发现“%”字符是不同的。

因此,您的字符串$lang有一个,而您的str_replace正在寻找%