下面是具体步骤和示例说明:
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 - Python技术站