php使用正则表达式获取字符串中的URL

下面是具体步骤和示例说明:

下面是具体步骤和示例说明:

1. 利用PHP内置函数获取HTML字符串

在使用正则表达式前,我们需要先获取HTML字符串。可以使用PHP内置的函数,如file_get_contents或curl等。

$htmlStr = file_get_contents('http://www.example.com');

2. 构建正则表达式

构建正则表达式是本次攻略的重点,因为不同的网页结构有不同的标记和规则。

以下是一个基本的URL匹配正则表达式示例:

preg_match_all('/(http[s]?:\/\/[^\s]*)/i', $htmlStr, $match);

该正则表达式的含义是:匹配以http或https协议开头的URL。

3. 执行正则匹配

接下来,我们使用preg_match_all函数执行正则匹配。

preg_match_all('/(http[s]?:\/\/[^\s]*)/i', $htmlStr, $match);

函数的第一个参数是正则表达式,第二个参数是待匹配的文本,第三个参数是匹配结果数组。上述代码执行后,$match会返回一个二维数组,包含了所有匹配到的URL。

4. 获取匹配结果

我们可以使用foreach循环遍历$match数组,获取所有匹配到的URL。

foreach($match[0] as $url) {
    echo $url . "<br/>";
}

示例说明

以下是一个示例:使用php获取一篇博客的HTML字符串,然后提取其中的所有图片链接。

// 获取博客HTML字符串
$htmlStr = file_get_contents('https://www.example.com/blog/123');

// 构建匹配图片链接的正则表达式
preg_match_all('/<img.*?src="(.*?)".*?>/is', $htmlStr, $match);

// 遍历所有匹配结果,输出链接
foreach($match[1] as $imgUrl) {
    echo $imgUrl . "<br/>";
}

以下是另一个示例:使用php获取一个网站的HTML字符串,然后提取其中的所有外部链接。

// 获取网站HTML字符串
$htmlStr = file_get_contents('https://www.example.com');

// 构建匹配外部链接的正则表达式
preg_match_all('/(http[s]?:\/\/[^\s]*)/i', $htmlStr, $match);

// 遍历所有匹配结果,输出链接
foreach($match[0] as $url) {
    echo $url . "<br/>";
}

以上就是使用php正则表达式获取字符串中URL的完整攻略。

本文标题为:php使用正则表达式获取字符串中的URL

基础教程推荐