【问题标题】:Warning:preg_match error (class.upload.php)警告:preg_match 错误(class.upload.php)
【发布时间】:2014-11-23 18:03:13
【问题描述】:

Verot 上传类 (class.upload.php v3.2) 在上传和 mime 检查时出错。

if (preg_match("/^([\.-\w]+)\/([\.-\w]+)(.*)$/i", $this->file_src_mime)) {
                            $this->file_src_mime = preg_replace("/^([\.-\w]+)\/([\.-\w]+)(.*)$/i", '$1/$2', $this->file_src_mime);
                            $this->log .= '-&nbsp;MIME validated as ' . $this->file_src_mime . '<br />';
                        } else {
                            $this->file_src_mime = null;
}

出现错误:

警告:preg_match() [function.preg-match]:编译失败:第 2616 行 class.upload.php 中偏移量 7 处的字符类中的无效范围

感谢您的建议。

【问题讨论】:

  • - 也应该被转义 - \- 或者放在块的末尾 [\.\w-]

标签: php preg-match


【解决方案1】:

[\.-\w] 是非法的,因为\w 是一个字符类,而不是一个字符。如所写,您的正则表达式正在寻找.\w 范围内的字符,这是没有意义的。

我不清楚你想做什么,但你不能这样做。

我认为你可能想要.-或单词字符(任何与\w匹配的字符),在这种情况下你应该使用[.\-\w]

【讨论】:

    【解决方案2】:

    这已在最新版本中得到修复,您现在可以在 Github 上找到: https://github.com/verot/class.upload.php (这里是类的创建者)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-22
      • 2014-10-07
      • 2011-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多