是否有内置的php(或MySQL)函数可以清理搜索中使用的字符串?在本例中,我只想在将其传递到MySQL regex之前,创建一个字符串字母表(上下)。
我使用PDO和参数化查询,所以我不担心SQL注入。不过,我想确保不会有人传入通配符并占用太多内存。到目前为止,除了空格和字母表之外,这就是我要删除的所有内容。够了吗?
preg_replace("/[^A-Za-z\s\s+]/", "", $query);
最佳答案
您所拥有的正则表达式将除去您所担心的通配符之外的更多内容,因此我认为这不是最好的解决方案。(你肯定听说过,但我还是要重复一遍。)
有些人遇到问题时,会想“我知道,我会用
正则表达式。”
现在他们有两个问题。
有一些内置的PHP函数可以帮助您进行过滤。如果您想对URL或电子邮件进行清理,可以结合使用this quote和filter_var()。
然而,在你的情况下,我认为以下是最简单的。
// Are there any I missed?
$keys = array("?", "%");
$sanitized = str_replace($keys, "", $query);
关于php - 函数清理mysql搜索字符串(主要是删除通配符)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7080900/