を使用してphpファイルの定数を再定義するために使用される正規表現がありpreg_match
、入力ファイルはhtmlspecialcharsを使用してスクリーニングされます。
define('MEMBERSHIP', 'GOLD');
次の正規表現が機能します
/define.*["e\']' . $constant . '["e;\'].*;/i
ただし、最後のセミコロンに一致し、ほとんどのシナリオで機能しますが、次のような場合に失敗します。
define("MEMBERSHIP", 'GOLD'); // membership subscription; empty means not in use.
最後のセミコロンに注意してください。コードは次のように置き換えられます。
define("MEMBERSHIP", 'SILVER'); empty means not in use.
これはコードを壊します。以下の正規表現を試しましたが、二重引用符がある場合は機能しませんでした
/define.*["e;\']' . $constant . '["e;\'][^;]*;/i
これを修正する方法はありますか?