atm我想准备我的代码以从PHP 7.0 to 7.2.
升级
为此,我编写了自己的小型搜索和替换脚本,该脚本使用REGEX规则查找不兼容的代码,并在可能的情况下使用preg_replace进行修复。
代码错误:
“警告:使用未定义的常量...”
为此,我编写了以下正则表达式:
$search_strings['7.0 to 7.2']['search'][] = '#(\[([^0-9$]\w+)\](?!\'))#i';
$search_strings['7.0 to 7.2']['replace'][] = '[\'$2\']';
这适用于代码中的普通数组,但是如果它们嵌套在MySQL查询或echo / declaration值中,它仍然很烂:
大多数规则都可以正常工作,但是现在我想解决以下问题:
$MyArray[array_level1][] = 'sdfsdf [test] my code';
将替换为(错误):
$MyArray['array_level1'][] = 'sdfsdf ['test'] my code';
应为:
$MyArray['array_level1'][] = 'sdfsdf [test] my code';
或
$sel = "SELECT * FROM $tbl[my_table_name] WHERE request LIKE '$myArray[test]%' LIMIT 0,1";
将替换为(错误):
$sel = "SELECT * FROM $tbl['my_table_name'] WHERE request LIKE '$myArray['test']%' LIMIT 0,1";
应该是(我认为这是一个额外的正则表达式,因为要复杂吗?):
$sel = "SELECT * FROM ".$tbl['my_table_name']." WHERE request LIKE '".$myArray['test']."%' LIMIT 0,1";
这也是错误的...我测试了几个REGEX,但没有找到解决方案,我认为我需要优化我的负面预测,这是我的示例: