我刚刚遇到与Colin Verot's upload script上传课程相关的问题。
/^([\.-\w]+)\/([\.-\w]+)(.*)$/i
我已将其转义如下,但我对preg_match / preg_replace的了解有限,只是想确认正确的“修复”。
/^([\.\-\w]+)\/([\.\-\w]+)(.*)$/i
投递问题的行数介于2899和3012之间
答案 0 :(得分:2)
您的修复是正确的。 [\.-\w]
是一个字符类,连字符尝试执行范围(即[0-9]
或[a-z]
)。 \w
已成为[a-zA-Z0-9_]
的简写,因此您无法说出从.
到\w
的范围。但是,我会让角色类看起来像这样:
[\w.-]
这段时间不需要转义,因为它在字符类中没有特殊含义(外部需要转义,因为它意味着"任何字符")。连字符也不需要转义,只要它是字符类的第一个或最后一个字符(即不是范围)。