我正在尝试使用 preg_match_all 从 HTML 代码块中提取所有 url。我也试图忽略所有图像。
示例 HTML 块:
$html = '<p>This is a test</p><br>http://www.facebook.com<br><img src="http://www.google.com/photo.jpg">www.yahoo.com https://www.aol.com<br>';
我正在使用以下内容尝试仅构建 URLS 数组。(不是图片)
if(preg_match_all('~(?:(?:https://)|(?:http://)|(?:www\.))(?![^" ]*(?:jpg|png|gif|"))[^" <>]+~', $html, $links))
{
print_r($links);
}
在上面的示例中,$links 数组应包含:
http://www.facebook.com, www.yahoo.com, https://www.aol.com
Google 被排除在外,因为它包含 .jpg 图像扩展名。当我将这样的图像添加到 $html 时,会出现问题:
<img src="http://www.google.com/image%201.jpg">
似乎百分号导致 preg_match 分解 URL 并提取以下“链接”。
http://www.google.com/image
知道如何只抓取不是图像的网址吗?(即使它们包含 url 通常具有的特殊字符)