Php 用于在函数调用中交换变量的正则表达式
我正在升级我的PHP脚本以使用mysqli,这需要更改变量交换位置的数千行。例如:Php 用于在函数调用中交换变量的正则表达式,php,regex,mysqli,Php,Regex,Mysqli,我正在升级我的PHP脚本以使用mysqli,这需要更改变量交换位置的数千行。例如: mysql_query($query, $db) 现在必须成为 mysqli_query($db, $query) 正则表达式是快速更改数千行的最佳方式吗?如果是这样,有人能帮我创建正则表达式来交换这些吗?我已经更改了mysqli的函数调用,但是函数参数交换超出了我的查找/替换技能 我正在使用Visual Studio 2015查找/替换。我认为它不需要正则表达式,因为它在沙箱中工作 打开每个文件并搜索mys
mysql_query($query, $db)
现在必须成为
mysqli_query($db, $query)
正则表达式是快速更改数千行的最佳方式吗?如果是这样,有人能帮我创建正则表达式来交换这些吗?我已经更改了mysqli的函数调用,但是函数参数交换超出了我的查找/替换技能
我正在使用Visual Studio 2015查找/替换。我认为它不需要正则表达式,因为它在沙箱中工作 打开每个文件并搜索mysql\u查询($query,$db) 每次遇到字符串时,请运行 str_replace('mysql_query($query,$db)','mysqli_query($db,$query)','mysql_query($query,$db)')
我认为它不需要正则表达式,它在沙箱中工作 打开每个文件并搜索mysql\u查询($query,$db) 每次遇到字符串时,请运行 str_replace('mysql_query($query,$db)','mysqli_query($db,$query)','mysql_query($query,$db)') 替换
mysql_query\s*\((\$\w+),\s*(\$\w+)\);
与:
正则表达式中的非转义括号将创建捕获组,替换中的$1
和$2
将拾取它们匹配的内容
这只适用于您发布的语句,其中查询是一个变量,因为\$\w+
只匹配一个变量名。如果你有像这样的文字字符串,它将不起作用
mysql_query("SELECT ...", $db);
替换
mysql_query\s*\((\$\w+),\s*(\$\w+)\);
与:
正则表达式中的非转义括号将创建捕获组,替换中的$1
和$2
将拾取它们匹配的内容
这只适用于您发布的语句,其中查询是一个变量,因为\$\w+
只匹配一个变量名。如果你有像这样的文字字符串,它将不起作用
mysql_query("SELECT ...", $db);
您的项目中有数千个查询执行???看到了吗。类似的东西应该可以在regexp中找到以下“mysql\u查询(\$(.+)\,\$(.+)”替换为“mysqli\u查询(\$$2\,\$\1)”。抱歉,这只是一个指针,不是答案。尤其是我不知道你用什么来查找和替换,这让它变得很难。例如。有时要替换您,请使用\1而不是$1。如果您在更改函数名之前这样做也会更容易。我没有创建项目,但我负责维护它。这是一个体育网站,查询大多遵循以下格式:
$GetStats=mysql\u query($query\u GetStats,$db)或die(mysqli\u error())代码>我正在使用Visual Studio 2015查找/替换。您的项目中有数千个查询执行???看到了吗。类似的内容应该可以在regexp中找到以下“mysql\u查询(\$(.+)\,\$(.+)”)替换为“mysqli\u查询(\$$2\,\$\1)”。抱歉,这只是一个指针,不是答案。尤其是我不知道你用什么来查找和替换,这让它变得很难。例如。有时要替换您,请使用\1而不是$1。如果您在更改函数名之前这样做也会更容易。我没有创建项目,但我负责维护它。这是一个体育网站,查询大多遵循以下格式:$GetStats=mysql\u query($query\u GetStats,$db)或die(mysqli\u error())
我正在使用Visual Studio 2015查找/替换。你认为他总是使用相同的变量$query
?我总是使用$sql=“which I want”你认为他总是使用相同的变量$query
?我总是使用$sql=“which I want”似乎找不到任何变量。完整语句通常如下所示,使用文本字符串的实例并不多:$GetStats=mysqli\u query($query\u GetStats,$simhl)或die(mysqli\u error())代码>您的正则表达式是否需要修改以查找/替换此案例?谢谢Barmar!为了适应我的情况,我做了一些小改动。正如您所说,它找不到“…”或$blah_布拉,但它帮了大忙。我不确定为什么它找不到$blah_布拉
,因为\w
匹配字母、数字和下划线。它似乎找不到。完整语句通常如下所示,使用文本字符串的实例并不多:$GetStats=mysqli\u query($query\u GetStats,$simhl)或die(mysqli\u error())代码>您的正则表达式是否需要修改以查找/替换此案例?谢谢Barmar!为了适应我的情况,我做了一些小改动。正如您所说,它找不到“…”或$blah_blah,但它帮了大忙。我不知道为什么它找不到$blah_blah
,因为\w
匹配字母、数字和下划线。