我目前正在为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
);
有什么想法吗?
答案 0 :(得分:1)
请尽量减少您的问题(发布尽可能简单的代码)。
$test = "bla blah 'match \' this' blah blah";
$test = preg_match('/(?<!\\\\)\'(.*)(?<!\\\\)\'/isU', $test, $matches);
var_dump($matches);
充当魅力。