为什么“htmlspecialchars”这么慢?

时间:2013-05-05 12:26:58

标签: php performance

htmlspecialchars($string, ENT_NOQUOTES); 

...大于 2.5倍慢于:

str_replace(array('&', '<', '>'), array('&amp;', '&lt;', '&gt;'), $string);

htmlspecialchars执行str_replace行没有做的事情吗?

P.S。我使用microtime在PHP 5.4中测量了速度。

3 个答案:

答案 0 :(得分:12)

str_replace()将字符串视为ASCII C字符串。 htmlspecialchars()没有。 (默认情况下,它是php 5.4中的UTF8字符串,如果内存服务的话。)

另外,htmlspecialchars()中的代码可以避免双重编码等。它会做更多的事情。

答案 1 :(得分:2)

查看documentation

它变慢的原因是因为它做得更多。它处理各种引号,编码和双重编码。

使用编码可能会很慢。因为计算机非常快,所以它应该没那么重要,但是如果你将它与简单的搜索和替换进行比较(基本上所有str_replace都会这样做),它会更慢。

答案 2 :(得分:0)

文档指出htmlspecialchars()有一个参数,您可以在其中输入您要使用的字符集,默认情况下它也会对所有内容进行两次编码。