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