我正在尝试从页面源获取图像网址。这是我的正则表达式
<?php
$url='http://www.biznessapps.com';
$data = file_get_contents($url);
$logo = get_logo($data);
echo $logo;
function get_logo($html)
{
//preg_match_all('', $html, $matches);
//preg_match_all('~\b((\w+ps?://)?\S+(png|jpg))\b~im', $html, $matches);
if(preg_match_all('/\bhttps?:\/\/\S+(?:png|jpg)\b/', $html, $matches))
{
echo "First";
return $matches[0][0];
}
else
{
if(preg_match_all('~\b((\w+ps?://)?\S+(png|jpg))\b~im', $html, $matches))
{
echo "Second";
return $matches[0][0];
}
else
return null;
}
}
?>
对于某些网址:http://www.biznessapps.com
正则表达式给出结果/frontend/images/logo.png
。这是图像网址的子文件夹路径。
我应该使用什么验证,以便如果有图像的子文件夹路径,它应该转换为绝对图像网址,http://www.biznessapps.com/frontend/images/logo.png
用于上述情况。
对于某些情况,用户输入的网址类似于http://www.biznessapps.com/
,因此如果我直接将/frontend/images/logo.png
附加到主网址,则转换为http://www.biznessapps.com//frontend/images/logo.png
,这又是错误的。
有人建议改变正则表达式以摆脱这种情况吗?
答案 0 :(得分:1)
我应该使用什么验证,以便如果有图像的子文件夹路径,它应该转换为绝对图像网址
您想使用UrlToAbsolute php库将相对网址转换为绝对网址。
以下是示例代码:
require('url_to_absolute.php');
echo url_to_absolute('http://www.biznessapps.com/', '/frontend/images/logo.png');
url_to_absolute:失败时返回false,否则返回绝对网址。如果 $ relativeUrl 是有效的绝对网址,则会返回该网址而不做任何修改。