2012-01-27 78 views
0

我有一个很大的字符串变量,它是通过归类latin_swedish_ci从类型为“Text”的数据库列中分配的。为什么str_replace()只能替换字符串中的一个字符的一个实例?

因为它是ASCII码,我需要替换所有非UTF-8字符,然后才能将变量放入我的PDF生成脚本中。

众所周知,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()不改变符号字符。

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

因此,任何想法如何让功能工作,因为我希望它,否则你会醒来与许多微黑洞明天消失你的碗麦片。

+0

如前所述,内置了处理html实体的函数。但是,除此之外,'strtr'是这种类型的字符串替换最有意义的函数。 – Matthew 2012-01-27 17:23:33

+0

[无法重现此问题](http://ideone.com/qhVG9h)。 – 2014-06-06 14:56:19

回答

3

看起来你正在努力实现可以使用这两个函数做的事情:

nl2br(htmlentities($tc)); 

的好处是,如果你的$tc变量获得在未来更多的HTML实体,你不会有拨弄你的str_replace()

+0

我同意。完美解决方案我更愿意使用这些代码,并且只有在没有其他选择的情况下才进行代码替换。 – HenryGuy 2012-01-27 16:45:23

+0

我从来没有来过这个功能。不知何故,我觉得我的生活现在会变得轻松很多! :) – kaleeway 2012-01-27 16:48:14

相关问题