0

在我的旧 php 应用程序中,我仍然使用 $_REQUEST 请求参数,现在我有一个函数可以在返回之前进行一些检查。

所以我希望像 $_REQUEST["hello"] 这样的所有变量都用我的函数替换,所以我有像 _request('hello') 这样的东西

我尝试了以下 sed 命令,但它没有找到我的 $_REQUEST 变量。

sed 's/$_REQUEST\["(.*)"\]/_request('\1')/g'

我尝试了不同的方法,例如转义 $ 字符或更改正则表达式 (.*),但它不起作用。这个有什么问题?

我将使用此命令来节省将所有 $_REQUEST 变量更改为函数调用的时间。

4

1 回答 1

1

试试这个:

$ cat file
sed replace $_REQUEST["hello"] with functionName('hello')

$ sed 's/\$_REQUEST\["\([^"]*\)"\]/_request('\''\1'\'')/g' file
sed replace _request('hello') with functionName('hello')

您需要使用 '\'' 因为 ' 会将您打回 shell,因此您需要在 shell 中提供文字 ' 后跟另一个 ' 才能返回 sed。我还将 .* 更改为 [^"]* 所以它会停在字符串的末尾,而不是最后一个 " 。

于 2013-04-05T13:25:40.923 回答