私は現在、正規表現構文のスキルを向上させるためだけに、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
);
何か案は ?