13
htmlspecialchars($string, ENT_NOQUOTES); 

...より約2.5倍遅い:

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

htmlspecialcharsラインがしないことをしますかstr_replace

ps を使用して、PHP 5.4 で速度を測定しmicrotimeました。

4

3 に答える 3

12

str_replace()文字列を ASCII C 文字列として扱います。htmlspecialchars()ではない。(メモリが機能する場合、php 5.4 ではデ​​フォルトで UTF8 文字列です。)

また、htmlspecialchars()二重エンコーディングなどを避けるためのコードもあります。それはより多くのことを行います。

于 2013-05-05T12:33:06.483 に答える
2

ドキュメントを参照してください。

遅い理由は、より多くのことを行うためです。さまざまな引用符、エンコーディング、および二重エンコーディングを処理します。

エンコーディングの操作は非常に遅くなる可能性があります。コンピューターは非常に高速であるため、それほど重要ではありませんが、単純な検索と置換 (基本的にはすべてstr_replaceそうです) と比較すると遅くなります。

于 2013-05-05T12:35:11.173 に答える