preg替换PHP中的字符串

时间:2013-01-23 23:07:09

标签: php regex escaping

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

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

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

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

充当魅力。