0

我目前正在为 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
    );

有任何想法吗 ?

4

1 回答 1

1

请尽量减少您的问题(发布尽可能简单的代码不工作)。

$test = "bla blah 'match \' this' blah blah";
$test = preg_match('/(?<!\\\\)\'(.*)(?<!\\\\)\'/isU', $test, $matches);
var_dump($matches);

起到魅力的作用。

于 2013-01-24T00:03:15.407 回答