簡體   English   中英

奇怪的php正則表達式通知

[英]strange php regex notice

我正在嘗試編寫一個函數,用於將錯誤的文件名轉換為正確的文件名。 我嘗試使用正則表達式完成此操作,它運行良好,但每次嘗試更正名稱時都會發出通知。 這是我的代碼:

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行的regexp代碼

可能是問題? 提前致謝!!

使用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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM