我有一個網站,用戶可以從輸入表單中搜索文本文件。該網站將搜索發佈到服務器,在該服務器中執行 type命令。轉義正則表達式解析用戶輸入
日誌文件包含特殊字符,例如`[(和某些字符「破發」的grep的功能,有沒有,如果用戶想應該是能夠搜索他們。
的問題是列表在處理數據或內置函數之前需要轉義的字符?escapeshellarg
在這種情況下不起作用,我無法在線查找應該轉義的字符列表
我有一個網站,用戶可以從輸入表單中搜索文本文件。該網站將搜索發佈到服務器,在該服務器中執行 type命令。轉義正則表達式解析用戶輸入
日誌文件包含特殊字符,例如`[(和某些字符「破發」的grep的功能,有沒有,如果用戶想應該是能夠搜索他們。
的問題是列表在處理數據或內置函數之前需要轉義的字符?escapeshellarg
在這種情況下不起作用,我無法在線查找應該轉義的字符列表
由於您使用的是PHP,請使用preg_match('/patern/', $str);
。
要爲正則表達式轉義字符串,請使用preg_quote($str)
'preg_match'沒有'replacement'參數,即'preg_replace'。 – Barmar 2014-09-23 08:12:09
你爲什麼使用'shell_exec'?使用PHP內置的'preg_match',並使用'preg_quote'來轉義輸入。 – Barmar 2014-09-23 08:09:36
這些文件非常龐大,而且PHP比grep慢得多 – dukevin 2014-09-23 08:10:28
您可以在調用'escapeshellarg'前嘗試使用'preg_quote'。但是由於PHP的regexp與grep不同,可能會有一些不兼容的地方。 – Barmar 2014-09-23 08:11:39