我有一个正则表达式,用于重新定义 php 文件中的常量,preg_match
并使用 htmlspecialchars 筛选输入文件,例如
define('MEMBERSHIP', 'GOLD');
以下正则表达式有效
/define.*["e\']' . $constant . '["e;\'].*;/i
但是它匹配最后一个分号,在大多数情况下都有效,但在以下情况下失败,例如:
define("MEMBERSHIP", 'GOLD'); // membership subscription; empty means not in use.
注意最后一个分号,导致替换代码为
define("MEMBERSHIP", 'SILVER'); empty means not in use.
这破坏了代码。尝试了下面的正则表达式,但它不适用于带有双引号的人
/define.*["e;\']' . $constant . '["e;\'][^;]*;/i
知道如何解决这个问题吗?