正则表达式基础
- 点号(.):匹配任何单个字符(除了换行符)。
- 星号(*):匹配前面的子表达式零次或多次。
- 双引号(”):用于匹配包含特殊字符的字符串。
- 括号(()):用于创建子表达式,可以捕获匹配的文本。
匹配图片src路径
preg_match('/src="([^"]+)"/', $htmlContent, $matches);
在这个示例中,$htmlContent是包含HTML内容的变量。正则表达式的意思是:
src=":匹配src属性的开始。([^"]+):捕获任何不包含双引号的字符序列。":匹配src属性的结束。
如果匹配成功,$matches数组将包含匹配的文本。$matches[1]将包含src属性的值。
处理不同的src路径格式
preg_match('/src\s*=\s*["\']?([^"\'>]+)["\']?/', $htmlContent, $matches);
这个正则表达式的意思是:
src\s*=\s*:匹配src属性,可能包含空格。["\']?:可选地匹配单引号或双引号。([^"\'>]+):捕获任何不包含单引号、双引号和大于号的字符序列。["\']?:可选地匹配单引号或双引号。["\']?:再次匹配可选的单引号或双引号。
匹配图片标签中的alt属性
preg_match('/<img[^>]*alt="([^"]+)"/', $htmlContent, $matches);
在这个示例中,<img[^>]*alt="([^"]+)"将匹配<img>标签,并捕获alt属性的值。
实例:提取页面中所有图片的src和alt路径
<?php
$htmlContent = <<<HTML
<html>
<head>
<title>Example Page</title>
</head>
<body>
<img src="image1.jpg" alt="Image 1">
<img src='image2.jpg' alt="Image 2">
<img src=image3.jpg alt="Image 3">
</body>
</html>
HTML;
preg_match_all('/src\s*=\s*["\']?([^"\'>]+)["\']?/i', $htmlContent, $srcMatches);
preg_match_all('/<img[^>]*alt="([^"]+)"/i', $htmlContent, $altMatches);
foreach ($srcMatches[1] as $index => $src) {
echo "Image " . ($index + 1) . " src: " . $src . "\n";
if (isset($altMatches[1][$index])) {
echo "Image " . ($index + 1) . " alt: " . $altMatches[1][$index] . "\n";
}
}
?>
这个脚本将输出:
Image 1 src: image1.jpg
Image 1 alt: Image 1
Image 2 src: image2.jpg
Image 2 alt: Image 2
Image 3 src: image3.jpg
Image 3 alt: Image 3