htmlspecialchars($string, ENT_NOQUOTES);
...大于 2.5倍慢于:
str_replace(array('&', '<', '>'), array('&', '<', '>'), $string);
htmlspecialchars
执行str_replace
行没有做的事情吗?
P.S。我使用microtime
在PHP 5.4中测量了速度。
答案 0 :(得分:12)
str_replace()
将字符串视为ASCII C字符串。 htmlspecialchars()
没有。 (默认情况下,它是php 5.4中的UTF8字符串,如果内存服务的话。)
另外,htmlspecialchars()
中的代码可以避免双重编码等。它会做更多的事情。
答案 1 :(得分:2)
它变慢的原因是因为它做得更多。它处理各种引号,编码和双重编码。
使用编码可能会很慢。因为计算机非常快,所以它应该没那么重要,但是如果你将它与简单的搜索和替换进行比较(基本上所有str_replace
都会这样做),它会更慢。
答案 2 :(得分:0)
文档指出htmlspecialchars()
有一个参数,您可以在其中输入您要使用的字符集,默认情况下它也会对所有内容进行两次编码。