Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
preg替换PHP中的字符串_Php_Regex_Escaping - Fatal编程技术网

preg替换PHP中的字符串

preg替换PHP中的字符串,php,regex,escaping,Php,Regex,Escaping,我目前正在用PHP为PHP编写一个代码混淆器,只是为了提高我使用正则表达式语法的技能 目标是在任何模糊处理之前对字符串进行base64_编码,并在任何模糊处理之后对其进行解码。在诸如“foo-bar”或“foo-bar”之类的标准字符串上,所有内容都可以工作,但对于包含转义(双引号/简单引号)的字符串(如:“return\”“\”。base64\u encode($matches[0])。\”;” 正如你所看到的,我试图混淆我自己的代码,这似乎很有趣。但我自己的代码包含特定的正则表达式字符串,这

我目前正在用PHP为PHP编写一个代码混淆器,只是为了提高我使用正则表达式语法的技能

目标是在任何模糊处理之前对字符串进行base64_编码,并在任何模糊处理之后对其进行解码。在诸如“foo-bar”或“foo-bar”之类的标准字符串上,所有内容都可以工作,但对于包含转义(双引号/简单引号)的字符串(如:“return\”“\”。base64\u encode($matches[0])。\”;”

正如你所看到的,我试图混淆我自己的代码,这似乎很有趣。但我自己的代码包含特定的正则表达式字符串,这些字符串没有正确解析

下面是负责编码以简单引号开头和结尾的字符串的代码(负责使用双引号执行相同操作的代码几乎相同):


$this->output=preg\u replace\u回调('/(?请尽量减少您的问题(发布尽可能简单的非工作代码)

$test=“bla blah”匹配\”此“blah blah”;

$test=preg_match('/(?我尽可能减少了我的问题。我尝试了你的代码(顺便感谢你的回答)在字符串中间没有一个双引号。这是我非常想做的事,无论分隔符的类型如何,无论是什么内容,都要编码一个字符串。为什么你不混淆整个字符串?BTW在你的模式中的<代码> i>代码>是无用的,因为模式中没有任何东西。在“其他”案例中有不同的表述。
    $this->output = preg_replace_callback('/(?<!\\\\)\'(.*)(?<!\\\\)\'/isU', create_function(
            '$matches',
            'return "\'".base64_encode($matches[0])."\'";'
        ), $this->output
    );
$test = "bla blah 'match \' this' blah blah";
$test = preg_match('/(?<!\\\\)\'(.*)(?<!\\\\)\'/isU', $test, $matches);
var_dump($matches);