1

我正在使用以下 PHP 代码来转义用户输入,但是 &、# 和 ; 无法转义,因为这些也用于其他特殊字符的代码。这是我的代码

>$data = preg_replace("/</", "&lt;", $data);
>$data = preg_replace("/>/", "&gt;", $data);
>$data = preg_replace("/\"/", "&quot;", $data);
>$data = preg_replace("/\(/", "&#40;", $data);
>$data = preg_replace("/\)/", "&#41;", $data);
>$data = preg_replace("/'/", "&#39;", $data);
>$data = preg_replace("/{/", "&#123;", $data);
>$data = preg_replace("/}/", "&#125;", $data);
>$data = preg_replace("/\`/", "&#96;", $data);//tick mark
>$data = preg_replace("/\[/", "&#91;", $data);
>$data = preg_replace("/\]/", "&#93;", $data);
>$data = preg_replace("/\=/", "&#61;", $data);

所以你能告诉我如何逃避 &、# 和 ; 不会打扰其余的代码。我确信这一定被问过很多次了,如果你能引导我到相关的帖子。此外,如果某些朋友创建了自己的代码/模块/类来进行转义,那将非常酷

4

1 回答 1

3

您最好使用htmlentites(),它将为您完成所有工作:

$data = htmlentities($data, ENT_QUOTES);

文档在这里

于 2012-07-22T13:58:10.393 回答