是什么原因导致警告:preg_match():未知修饰符 'p'
what causes Warning: preg_match(): Unknown modifier 'p'
我遇到了问题,无法修复此错误。我正在使用这个上传脚本来检查 mime 类型。
Warning: preg_match(): Unknown modifier 'p'
Warning: preg_match(): Unknown modifier 'g'
Warning: preg_match(): Unknown modifier '('
if (preg_match('/^image/p?jpeg$/i', $_FILES['upload']['type']) or
preg_match('/^image/gif$/i', $_FILES['upload']['type']) or
preg_match('/^image/(x-)?png$/i', $_FILES['upload']['type']))
{
// Handle the file...
}
else
{
$error = 'Please submit a JPEG, GIF, or PNG image file.';
include $_SERVER['DOCUMENT_ROOT'] . '/includes/error.html.php';
exit();
}
提前致谢
第二个 /
之后的所有内容(结束 delimiter) is considered flags。使用另一个分隔符,例如 ~
~^image/p?jpeg$~i
或者使用反斜杠匹配模式中的分隔符文字:
/^image\/p?jpeg$/i
选择分隔符最舒服,模式内部不需要它 > 不用担心转义。经常使用的定界符是 /
、~
、#
、@
甚至括号样式的定界符,例如 (
模式 )
.
旁注
您可以使用 alternation:
将所有三个 preg_match
合并为一个
if(preg_match('~^image/(?:gif|p?jpeg|(?:x-)?png)$~i', $_FILES['upload']['type'])) { ... }
(?:
开始非捕获 group. Good for testing: regex101.com
我遇到了问题,无法修复此错误。我正在使用这个上传脚本来检查 mime 类型。
Warning: preg_match(): Unknown modifier 'p'
Warning: preg_match(): Unknown modifier 'g'
Warning: preg_match(): Unknown modifier '('
if (preg_match('/^image/p?jpeg$/i', $_FILES['upload']['type']) or
preg_match('/^image/gif$/i', $_FILES['upload']['type']) or
preg_match('/^image/(x-)?png$/i', $_FILES['upload']['type']))
{
// Handle the file...
}
else
{
$error = 'Please submit a JPEG, GIF, or PNG image file.';
include $_SERVER['DOCUMENT_ROOT'] . '/includes/error.html.php';
exit();
}
提前致谢
第二个 /
之后的所有内容(结束 delimiter) is considered flags。使用另一个分隔符,例如 ~
~^image/p?jpeg$~i
或者使用反斜杠匹配模式中的分隔符文字:
/^image\/p?jpeg$/i
选择分隔符最舒服,模式内部不需要它 > 不用担心转义。经常使用的定界符是 /
、~
、#
、@
甚至括号样式的定界符,例如 (
模式 )
.
旁注
您可以使用 alternation:
将所有三个preg_match
合并为一个
if(preg_match('~^image/(?:gif|p?jpeg|(?:x-)?png)$~i', $_FILES['upload']['type'])) { ... }
(?:
开始非捕获 group. Good for testing: regex101.com