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

Regex 替换为正则表达式(保留中间文本),regex,replace,phpstorm,Regex,Replace,Phpstorm,我有一个网站,我需要替换近400个此类字符串(跨越几十个或数百个文件) 用这个 mysql_real_escape_string($_POST['some_text_here']) 这里的关键是我想添加结尾括号,否则这将是一个简单的搜索和替换。 我对正则表达式是新的,所以我甚至不知道在替换的中间留下文本(特别是“某物文本”)是否可以进行搜索和替换。 我正在使用PHPStorm来解决这个问题,如果这有什么不同的话 我想,正则表达式不是你想要的。。你更想要这样的东西: foreach ($_POS

我有一个网站,我需要替换近400个此类字符串(跨越几十个或数百个文件)

用这个

mysql_real_escape_string($_POST['some_text_here'])
这里的关键是我想添加结尾括号,否则这将是一个简单的搜索和替换。

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


我正在使用PHPStorm来解决这个问题,如果这有什么不同的话

我想,正则表达式不是你想要的。。你更想要这样的东西:

foreach ($_POST as $key => $value) {
    $_POST[$key] = mysql_real_escape_string($value);
}
mysql_real_escape_string\(\$_POST\['$1'\]\)
正则表达式

\$_POST\['([a-zA-Z0-9_-]+)'\]
替换-类似以下内容:

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

顺便说一句:mysql_*已被弃用,不应该再使用了-请改用mysqli_*或PDO

(\$\u POST\['[^']*'\]
然后换成这样的东西

mysql\u real\u escape\u字符串($1)
代码:

preg\u replace(“($\u POST\\[\\'[^\']\\\\]\\\]”),“mysql\u real\u escape\u string($1)”,“文件内容转到此处”)

未测试

我还没有尝试过任何东西,因为我不确定使用regex search and replace是否可以做到这一点。然后先尝试一下。当然这是可能的。但你需要先尝试一下,然后才能找到解决方案。我希望搜索并替换几十到几百个文件,而不是一组POST数据变量,否则这是一个很好的方法来遍历所有文件。你从来没有提到过一些文件。。我们没有水晶球。。。我懂了。。您有sql注入问题,希望通过简单的搜索和替换来处理此问题。您仍然可以使用我的代码——只需将其添加到文件的第一行中——但我建议您将每个mysql_*函数替换为它的等效PDO函数,以更好地处理此行为。是的,我继承了此网站,并希望尽快将其安装到位。非常感谢。实际上我稍微修改了一下。我在下面添加了我使用的(\$\u POST[.*])//我在开头添加了一个斜杠,并在POST文本中更改为通配符。啊。。。对我忘了星星。我将编辑原始答案。还忘了转义
$
。只要意识到如果在同一行上有多个
$\u POST[]
语句,
*
就有潜在的危险。是的,.*为我匹配了两个$\u POST语句,所以我相信您的实现更好。谢谢