我有一个包含 HTML 和文本混合的表单字段。我希望用户能够使用基本的 HTML和标点符号。
目前我正在使用mysql_real_escape_string和preg_replace来清理数据并将其插入数据库。我的理解是 preg_replace 是去除不在允许字符白名单中的任何字符的最佳方法,并且 mysql_real_escape_string 可以防止 SQL 注入。
//How I collect and sanitise the data...
$var=mysql_real_escape_string(
preg_replace("/[^A-Za-z0-9-?!$#@()\"'.:;\\@,_ =\/<> ]/",'',$_POST['var'])
);
但是,当使用哈希字符时,它会不断中断。
我的问题是:
1)有没有更有效的方法来做到这一点?
2)如果这是最好的方法,我做错了什么?
我需要允许的字符是:所有字母数字字符和:
? !@ # $ % & ( ) - 。, : ; '" < > / + =
谢谢!