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 に答える