我目前正在为PHP编写PHP代码混淆器,只是为了提高我的正则表达式语法。preg替换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
);
任何想法?
为什么你不混淆整个字符串?顺便说一句,你的模式中的'i'标志是无用的,因为模式中没有任何东西在“其他”情况下具有不同的表示。 – inhan