为什么str_replace()只替换字符串中一个字符的实例?

时间:2012-01-27 16:39:22

标签: php str-replace

我有一个大型字符串变量,该字符串变量是从“ Text”类型的数据库列中分配的,带有Collat​​ion latin_swedish_ci。

因为它是ASCII格式,所以在将变量放入PDF生成脚本之前,我需要替换所有非UTF-8字符。

众所周知,PDF使用的标准是邪恶的。如果我使用普通的ASCII输入,它会变得疯狂并导致时空裂口。

因此,为了防止对我们的宇宙造成任何损害,我需要帮助弄清楚为什么这个str_replace()函数只替换一个字符类型并忽略该字符的任何重复

这是我的代码:

$tc = str_replace (array("\n", "£", "&"), array("<br/>", "&pound;", "&amp;"), $tc);

输入:

Terms & Conditions: Mandatory charge of £10 for cancellations.    
VAT E&EO

输出:

Terms &amp; Conditions: Mandatory charge of &pound;10 for cancellations.
VAT E&EO

正如您在第二行的输出中所看到的,str_replace()不会更改&符号。

我想知道这是因为它超过两行还是类似的东西。

所以任何想法如何让这个功能按照我想要的方式工作,否则你很快就会醒来,许多Micro Blackholes会在明天消失你的一碗麦片。

1 个答案:

答案 0 :(得分:3)

看起来你想要实现的目标可以使用这两个函数来完成:

nl2br(htmlentities($tc));

好处是,如果您的$tc变量将来再获得更多HTML实体,则无需使用str_replace()