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 回答