引言
图片类型匹配方法
1. 使用exif_imagetype函数
function checkImageType($filePath) {
$type = exif_imagetype($filePath);
if ($type !== false) {
switch ($type) {
case IMAGETYPEGIF:
echo "是GIF图片";
break;
case IMAGETYPEJPEG:
echo "是JPEG图片";
break;
case IMAGETYPEPNG:
echo "是PNG图片";
break;
// 其他图片类型...
default:
echo "未知图片类型";
}
} else {
echo "不是图片";
}
}
2. 使用getimagesize函数
function isImage($imgPath) {
$info = getimagesize($imgPath);
$types = [
IMAGETYPEGIF,
IMAGETYPEJPEG,
IMAGETYPEPNG,
IMAGETYPEBMP,
// 其他图片类型...
];
return in_array($info[2], $types);
}
3. 使用正则表达式
function isImageByRegex($filePath) {
$pattern = '/\.(jpg|jpeg|gif|png|bmp)$/i';
return preg_match($pattern, $filePath);
}
正则表达式全攻略
正则表达式基础
正则表达式是一种用于处理字符串的强大工具,PHP支持POSIX和Perl风格的正则表达式。以下是一些基础知识:
- 字符集和类:使用字符集可以匹配特定类型的字符,例如
[a-z]匹配任何小写字母。 - 重复:使用
*、+、?等符号可以指定重复次数,例如a*匹配任意个a字符。
正则表达式示例
以下是一些使用正则表达式的示例:
- 匹配以
.jpg、.jpeg、.gif、.png或.bmp结尾的文件名:
$pattern = '/\.(jpg|jpeg|gif|png|bmp)$/i';
- 匹配手机号码:
$pattern = '/^1[34567]\d{9}$/';
- 匹配电子邮件地址:
$pattern = '/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/';