php - 奇怪的 PHP 正则表达式通知

标签 php regex notice

我正在尝试编写一个将错误文件名转换为正确文件名的函数。我尝试使用正则表达式来完成此操作,它运行良好但每次尝试更正名称时都会发出通知。这是我的代码:

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

通知是:

Notice: Use of undefined constant _ - assumed '_' in C:\Documents and Settings\A dministrator\Desktop\script\script.php(89) : regexp code on line 1

可能是什么问题?提前致谢!!

最佳答案

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

关于php - 奇怪的 PHP 正则表达式通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8400245/

相关文章:

apache-flex - Flex 中的通知类似 growl

javascript - 如何检查字符串的前 5 个字符和后 5 个字符?

r - 如果最后/第一个字符不是字母/数字,如何删除它们?

javascript - 服务器发送的事件 : How do you automatically reconnect in a cross-browser way?

javascript - AJAX 请求已提交,但未收到 POST 值

ruby - gsub 删除第一个逗号前的所有内容

PHP新手问题; "notice: undefined property"

php - 尝试在wordpress中获取非对象 "class-wp-query.php"和 "link-template.php"的属性

PHP:检查字符串是否包含软连字符并替换它

php - 使用 PHP GET 清理用于 href 的字符串