我想清理用户的字符串输入。我想避免使用特殊字符和代码符号,例如<
,>
,&
等,但允许使用space
和single quotes (')
。到目前为止,我所做的是:
$query = preg_replace('/[^A-Za-z0-9\-]/', '', htmlentities($request->search_name, ENT_COMPAT));
当我使用上面的代码对其进行测试时,它还会删除我需要的空格。我们非常感谢您的帮助。
编辑:
如果我键入
mark O'neal"<>!
我上面的代码打印错误:
markOnealquotltgt
它应该输出:
mark O'nealquotltgt
答案 0 :(得分:1)
您只需要在字符集中添加空格和'
个字符:
$search_name = "mark O'neal\"<>!";
echo preg_replace("/[^A-Za-z0-9\- ']/", '', htmlentities($search_name, ENT_COMPAT));
输出:
mark O'nealquotltgt
答案 1 :(得分:1)
忽略使用\s
的空间
preg_replace('/[^A-Za-z0-9\-\s]/', ... );