我需要一个正则表达式,以便preg_replace在搜索表单输入中与 php 函数一起使用,以便在SQLMySQL 多语言 utf8 数据库中进行全文搜索。我曾考虑将 phpfilter_var与 一起使用FILTER_SANITIZE_STRING,但最终得到preg_replace:
我想要这些功能:
- 保留空格,如果连续有多个,则仅保留一个(连续空格)
- 保留双引号,如果有更多,则只保留一个(以便我可以在
phrasein 中使用它IN BOOLEAN MODE) - 保持
-&+& '~' 并且只有一个如果连续更多 - 因为我希望它是多语言的,所以它也应该考虑 Unicode (utf8) 字母
- 我没有/不需要考虑口音。
这就是我所做的:
$q = addslashes($q);
$q = preg_replace('/[^\w\d\s\s+\p{L}]/u', "", $q);
但是输出并不能满足我对引号(")和减号(-)的喜欢。如何编写一个安全的查询字符串以在我的搜索框中使用?
有没有比使用更好的做法preg_replace?