替换为正则表达式(保留中间文本)

时间:2013-02-11 21:30:09

标签: regex replace phpstorm

我有一个网站,我需要替换近400种这样的字符串(跨数十或数百个文件)

$_POST['some_text_here']

用这个

mysql_real_escape_string($_POST['some_text_here'])

这里的关键是我想要添加结束括号,否则这将是一个简单的搜索和替换。

我是正则表达式的新手,所以我甚至不知道在替换的中间留下文本(特别是'some_text_here')是否可以进行搜索和替换。

如果有所作为,我正在使用PHPStorm。

2 个答案:

答案 0 :(得分:1)

这样的事情应该有效:

(\$_POST\['[^']*'\])

然后用这样的东西替换

mysql_real_escape_string($1)

代码:

preg_replace ( '($_POST\\[\'[^\']\'\\])', 'mysql_real_escape_string($1)', 'file contents go here' )

未经过测试

答案 1 :(得分:0)

我认为,正则表达式不是你想要的......你宁愿想要这样的东西:

foreach ($_POST as $key => $value) {
    $_POST[$key] = mysql_real_escape_string($value);
}

正则表达式..

\$_POST\['([a-zA-Z0-9_-]+)'\]

替换 - 像这样:

mysql_real_escape_string\(\$_POST\['$1'\]\)

顺便说一下:mysql_ *已弃用且不应再使用了 - 请改用mysqli_或PDO