上传错误preg_Match()

2022-03-29 00:00:00 regex php preg-match

我使用的是class.upload0.32版,它在我的本地主机服务器上运行正常,但在我的Web服务器上无法运行。

Web服务器日志文件显示此错误:

PHP Warning:  preg_match(): Compilation failed: invalid range in character class at offset 7 in.

Web服务器上的PHP版本:5.4.39

本地主机上的PHP版本:5.5.15

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;
}

解决方案

您必须转义破折号:

/^([.-w]+)/([.-w]+)(.*)$/i

或将其放在Character类的结尾或开头

/^([-.w]+)/([-.w]+)(.*)$/i

并且点不需要转义,也不需要区分大小写:

/^([_.w]+)/([-.w]+)(.*)$/

相关文章