【发布时间】:2014-09-23 08:08:01
【问题描述】:
我有一个网站,用户可以在其中从输入表单中搜索文本文件。该网站将搜索发布到执行shell_exec grep -E "^(LOG|DATE)+.$query" 类型命令的服务器。
日志文件包含特殊字符,如 `[( 并且如果用户希望应该能够搜索它们。
问题是某些字符“破坏”了 grep 函数。在处理数据或内置函数之前,是否有需要转义的字符列表? escapeshellarg 在这种情况下不起作用,我在网上找不到应该转义的字符列表
【问题讨论】:
-
你为什么使用
shell_exec?使用PHP内置的preg_match,并使用preg_quote对输入进行转义。 -
文件很大,PHP 比 grep 慢很多
-
您可以在调用
escapeshellarg之前尝试使用preg_quote。但由于 PHP 的正则表达式与 grep 的不一样,可能会有一些不兼容的地方。 -
@Barmar 是的,您的解决方案有效。我正在寻找的函数是 preg_quote。发布为答案,以便我可以 +rep 并接受。谢谢!
-
已经有推荐preg_quote的答案了。
标签: php regex validation escaping