我目前正在为 PHP 中的 PHP 编写代码混淆器,只是为了提高我使用正则表达式语法的技能。
目标是在任何混淆过程之前对字符串进行base64_encode,并在任何混淆过程之后对其进行解码。在像“foo bar”或“foo bar”这样的标准字符串上,一切正常,但它不适用于包含转义(双/简单)引号的字符串,例如:'return \'"\'.base64_encode($matches[0] ).\'"\';'
如您所见,我试图混淆我自己的代码,这似乎很有趣。但是我自己的代码包含未正确解析的特定正则表达式字符串。
这是负责对以单引号开头和结尾的字符串进行编码的代码(负责对双引号执行相同操作的代码几乎相同):
$this->output = preg_replace_callback('/(?<!\\\\)\'(.*)(?<!\\\\)\'/isU', create_function(
'$matches',
'return "\'".base64_encode($matches[0])."\'";'
), $this->output
);
有任何想法吗 ?