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 "链接无效";
}