提前道歉令人困惑的头衔。我的问题如下,我在大约600个文件中有以下文字:
$_REQUEST['FOO']
我想用以下内容替换它:
$this->input->post('FOO')
澄清一下,我与以下内容相符:
$_REQUEST any number of A-Za-z\d followed by a ]
并将其替换为:
$this->input->post( the alphanumeric word from above followed by a )
或者一般来说:
Anchor token TEXT TO KEEP end anchor token
这与标准的查找/替换不同,因为我想在两个单词边界内保留文本。
此功能是否存在于任何文本编辑器(Eclipse,np ++等)中。或者我是否需要编写某种类型的程序来解析这600个文件以进行替换?
答案 0 :(得分:3)
s/\$__REQUEST\[(.*?)]/$this->input->post(\1)/
.*?
将匹配从[
到第一个 ]
的所有内容,而不是最后一个,尽管它不太可能在此重要情况下。
顺便说一句,PHP超全局是$_REQUEST
而不是$__REQUEST
答案 1 :(得分:2)
您可以使用正则表达式在Notepad ++中执行此操作。取代
\$_REQUEST\['([^']*)'\]
与
$this->input->post('$1')
如果您也有双引号,您可以使用更复杂的表达式来处理这两种情况,但我不确定Notepad ++是否支持反向引用;取代
\$_REQUEST\[(['"])(.*?)\1\]
与
$this->input->post($1$2$1)
请注意,我已经恢复使用@ExplosionPills建议的(.*?)
- 实际上可能更好。