1. 正则表达式基础知识

正则表达式(Regular Expression,简称Regex)是一种用于处理字符串的强大工具。在PHP中,正则表达式可以通过preg_match等函数进行匹配操作。

1.1 正则表达式的构成

  • 字符集:用于匹配一类特定的字符,如[a-zA-Z]匹配任意字母。
  • 量词:用于指定匹配的次数,如*表示匹配0次或多次,+表示匹配1次或多次。
  • 分组:用于将多个字符组合成一个单元,如(abc)abc视为一个整体进行匹配。

1.2 PHP正则表达式函数

  • preg_match:用于匹配字符串,返回匹配结果。
  • preg_match_all:用于查找所有匹配项,返回一个包含所有匹配结果的数组。

2. 图片URL正则表达式实例

2.1 匹配基本图片链接

$pattern = '/<img\s+src="([^"]+)"\s*/';
$subject = '<img src="http://example.com/image.jpg">';
if (preg_match($pattern, $subject, $matches)) {
    echo "图片链接: " . $matches[1];
}

2.2 匹配多种图片格式

$pattern = '/<img\s+src="([^"]+)\.(jpg|jpeg|png|gif)"\s*/';
$subject = '<img src="http://example.com/image.png">';
if (preg_match($pattern, $subject, $matches)) {
    echo "图片链接: " . $matches[1];
}

2.3 匹配URL中的图片路径

$pattern = '/http[s]?:\/\/[^\s\/?#.]+\.(jpg|jpeg|png|gif)/';
$subject = '这是一张图片:http://example.com/image.jpg';
if (preg_match($pattern, $subject, $matches)) {
    echo "图片链接: " . $matches[0];
}

3. 图片链接验证

function validateImageURL($url) {
    $pattern = '/http[s]?:\/\/[^\s\/?#.]+\.(jpg|jpeg|png|gif)/';
    return preg_match($pattern, $url) === 1;
}

$url = 'http://example.com/image.jpg';
if (validateImageURL($url)) {
    echo "链接有效";
} else {
    echo "链接无效";
}

4. 总结