用于在函数调用中交换变量的正则表达式

时间:2016-08-09 16:56:10

标签: php regex mysqli

我正在升级我的PHP脚本以使用mysqli,它需要更改变量已交换位置的数千行。例如:

mysql_query($query, $db)

现在必须成为

mysqli_query($db, $query)

正则表达式是快速更改数千行的最佳方法吗?如果是这样,有人可以帮我创建正则表达式来交换这些吗?我已经更改了mysqli的函数调用,但函数参数交换超出了我的查找/替换技能。

我正在使用Visual Studio 2015查找/替换。

2 个答案:

答案 0 :(得分:0)

我认为它不需要在沙盒中使用正则表达式

打开每个文件并搜索mysql_query($ query,$ db) 每次遇到字符串运行 str_replace(' mysql_query($ query,$ db)',' mysqli_query($ db,$ query)',' mysql_query($ query,$ db)&# 39;);

$test = 'mysql_query($query, $db)';
       echo str_replace($test,'mysqli_query($db, $query)', 'mysql_query($query, $db)' );
echo $test;

答案 1 :(得分:0)

替换

mysql_query\s*\((\$\w+),\s*(\$\w+)\);

使用:

mysqli_query($2, $1);

正则表达式中的非转义括号会创建捕获组,替换中的$1$2会选择匹配的内容。

这仅适用于您发布的语句,其中查询是变量,因为\$\w+只匹配变量名称。如果您有像

这样的文字字符串,它将无法工作
mysql_query("SELECT ...", $db);