引言

图片类型匹配方法

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,}$/';

总结