怎么用PHP正则获取有图片地址
发布时间:2023-05-14 22:20:04
正则表达式是一种用于匹配和处理字符串的工具。在PHP中,我们可以使用正则表达式来获取带有图片地址的字符串。下面是一个简单的PHP正则表达式,用于匹配以“http”或“https”开头并以“jpg”或“png”结尾的字符串:
preg_match_all('/(https?:\/\/[^"]+\.(?:png|jpg))/i', $html, $matches);
在这个正则表达式中,我们首先使用“/”字符将表达式包围起来。然后我们使用“()”来创建一个捕获组,以便将匹配到的内容提取出来。在这个捕获组中,我们使用“https?”来匹配以“http”或“https”开头的字符串。接着,我们使用“:\/\/”来匹配“://”之间的文本。然后我们使用“[^"]+”来匹配任何除双引号“"”之外的字符。最后我们使用“\.(?:png|jpg)”来匹配以“png”或“jpg”结尾的字符串。整个表达式的最后一个字符是“/i”,表示不区分大小写。
现在我们可以使用preg_match_all函数来搜索整个HTML代码,并将所有匹配的内容存储到$matches数组中。下面是一个完整的PHP脚本,它获取一个HTML代码,并打印出所有带有图片地址的字符串:
$html = '
<html>
<head>
<title>My website</title>
</head>
<body>
<img src="https://example.com/image1.png">
<img src="https://example.com/image2.jpg">
<a href="https://example.com">Visit our website</a>
<img src="https://example.com/image3.jpeg">
</body>
</html>
';
preg_match_all('/(https?:\/\/[^"]+\.(?:png|jpg))/i', $html, $matches);
foreach ($matches[1] as $value) {
echo $value . "
";
}
在这个示例中,我们使用一个包含了4个图片链接的简单HTML代码。首先,我们使用preg_match_all函数来搜索这个代码中的所有带有图片地址的字符串,并将它们存储到$matches变量中。然后,我们使用一个foreach循环遍历所有的匹配项,并打印出它们的值。
最终输出结果是:
https://example.com/image1.png https://example.com/image2.jpg https://example.com/image3.jpeg
在实际应用中,我们可以使用这个正则表达式来获取任何包含图片链接的字符串,而不仅仅是HTML代码。我们只需要将我们要匹配的字符串传递给preg_match_all函数即可。
