PHP 7.2升级代码-REGEX使用未定义的常量

时间:2018-11-27 08:55:59

标签: php regex constants upgrade php-7.2

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,但没有找到解决方案,我认为我需要优化我的负面预测,这是我的示例:

Regex Example

0 个答案:

没有答案