引言

一、PHP图片抓取概述

二、PHP正则表达式基础

    正则表达式的语法:正则表达式由字符和符号组成,用于定义字符串的匹配模式。

    常用正则表达式符号

    • .:匹配除换行符以外的任意字符。
    • *:匹配前面的子表达式零次或多次。
    • +:匹配前面的子表达式一次或多次。
    • ?:匹配前面的子表达式零次或一次。

    PHP正则表达式函数

    • preg_match():匹配整个字符串。
    • preg_match_all():匹配整个字符串,并返回所有匹配结果。

三、实战案例:使用PHP正则表达式抓取图片

  1. 示例代码
<?php
header("Content-type:text/html;charset=utf-8");

// 待抓取的HTML内容
$htmlContent = <<<HTML
<div>
    <img src="https://www.example.com/image1.jpg" alt="图片1" />
    <img src='https://www.example.com/image2.jpg' alt="图片2" />
    <img src="https://www.example.com/image3.jpg" />
</div>
HTML;

// 正则表达式匹配图片URL
$pattern = '/<img\s+[^>]*src=["\'](.*?)["\']/';
$matches = [];

// 执行匹配操作
preg_match_all($pattern, $htmlContent, $matches);

// 输出匹配结果
foreach ($matches[1] as $match) {
    echo "图片URL: " . $match . "<br/>";
}
?>
  1. 解析
    • 正则表达式/<img\s+[^>]*src=["\'](.*?)["\']>用于匹配包含src属性的<img>标签,并提取其中的图片URL。
    • preg_match_all()函数用于执行匹配操作,并将匹配结果存储在$matches数组中。
    • 循环遍历$matches[1]数组,输出所有匹配的图片URL。

四、实战技巧

    处理特殊字符:在正则表达式中,特殊字符可能引起误解。例如,反斜杠\需要使用两个反斜杠\\进行转义。

    优化正则表达式:针对不同的抓取需求,可以优化正则表达式,提高匹配效率和准确性。

五、总结