3

悪いファイル名を正しいファイル名に変換する関数を書こうとしています。私はこれを正規表現で達成しようとしました。これはうまく機能しますが、名前を修正しようとするたびに通知をスローします。これは私のコードです:

private function clean_filename($filename) {
    $reserved = preg_quote('\/:*?"<>|', '/');
    $filename = preg_replace("/([\\x00-\\x20\\x7f-\\xff" .$reserved . "])/e", "_", $filename);
    return $filename;
}

通知は次のとおりです。

注意:C:\ Documents and Settings \ A dministrator \ Desktop \ script \ script.php(89)での未定義の定数_-想定される「_」の使用:1行目の正規表現コード

何が問題になる可能性がありますか?前もって感謝します!!

4

1 に答える 1

5

を使用eすると、PHP式として評価が強制されます。したがって、以下を使用する必要があります。

$filename = preg_replace("/([\\x00-\\x20\\x7f-\\xff" .$reserved . "])/e",
    "'_'", $filename); //or "\"_\""; or '"_"' etc.

eフラグは必要ないので、代わりにフラグを削除する方がよいでしょう(置換式は固定されています。常にアンダースコア文字です)。

$filename = preg_replace("/([\\x00-\\x20\\x7f-\\xff" .$reserved . "])/",
    "_", $filename);
于 2011-12-06T13:00:40.973 に答える