0

次の文字列に取り組むために、RegExrで正規表現を作成しました。

<?php _on*/4353452f43f43f46 xx46 _off*/ ?>

これは正規表現コードです:

(.*<?php.*)(.*_on.*)(.*_off.*)(.*?>)

ここでは正常に機能しています:

http://regexr.com?31ptt

しかし、PHPでは機能しません。「不明な修飾子'<'」などの奇妙なエラーが発生します。

これをPHPで動作するように変換するには何をする必要がありますか?

これは私のphpコードです:

$virusstring = '(.*/<?php.*)(.*_on.*)(.*_off.*)(.*?>)';    
if(preg_match($virusstring,$myfile)) {
    $fixed = preg_replace($virusstring,'',$myfile);
    $blah = file_put_contents($item, $fixed);
}

$ myfileは、スキャンされている感染ファイルから取得されたものです。

4

2 に答える 2

3

正規表現に区切り文字がありません。区切り文字を追加する必要があります。そうしないと、PHPは開口部(が区切り文字であると見なします。

/(.*<\?php.*)(.*_on.*)(.*_off.*)(.*\?>)/

また、?前の文字の0または1に一致する数量詞です。あなたはそれを逃れる必要があります:

(.*<\?php.*)(.*_on.*)(.*_off.*)(.*\?>)
于 2012-08-10T03:31:39.490 に答える
1

これはうまくいくようです

preg_match("/(.*<\\?php.*)(.*_on.*)(.*_off.*)(.*\\?>)/us", $searchText)
于 2012-08-10T03:36:48.673 に答える