<img>
的src
已知,以及目标网页的网址,如http://test.com/directory/hi.html
,如何实现一般函数来检索图像的绝对url?如何在PHP中获取<img />的绝对网址?
-2
A
回答
6
我想:
- 检查是否IMG URL开始用主机的价值,如果是的话,返回它,因为它已经是绝对的
- 解析网页的URL获得基地主机的价值
- 检查img src是否相对于根目录或目录,并根据需要附加到基本主机值。
parse_url()将是选择的功能在这里。我感到勇敢,所以我实现它你:
function getAbsoluteImageUrl($pageUrl,$imgSrc)
{
$imgInfo = parse_url($imgSrc);
if (! empty($imgInfo['host'])) {
//img src is already an absolute URL
return $imgSrc;
}
else {
$urlInfo = parse_url($pageUrl);
$base = $urlInfo['scheme'].'//'.$urlInfo['host'];
if (substr($imgSrc,0,1) == '/') {
//img src is relative from the root URL
return $base . $imgSrc;
}
else {
//img src is relative from the current directory
return
$base
. substr($urlInfo['path'],0,strrpos($urlInfo['path'],'/'))
. '/' . $imgSrc;
}
}
}
//tests
$host = 'http://test.com/directory/hi.html';
$imgSrc = '/images/lolcat.jpg';
echo getAbsoluteImageUrl($host,$imgSrc);
//echos http//test.com/images/lolcat.jpg
$host = 'http://test.com/directory/hi.html';
$imgSrc = 'images/lolcat.jpg';
echo getAbsoluteImageUrl($host,$imgSrc);
//echos http//test.com/directory/images/lolcat.jpg
$host = 'http://test.com/directory/hi.html';
$imgSrc = 'http://images.com/lolcat.jpg';
echo getAbsoluteImageUrl($host,$imgSrc);
//echos http://images.com/lolcat.jpg
-1
如果我没有理解这个问题很好,你可以定义如下的应用程序根目录的APPLICATION_PATH事后使用它:
define('APPLICATION_PATH', realpath(dirname(__FILE__)));
...
<img src="<?php APPLICATION_PATH ?>/path/to/image.png" alt="" />
...
0
使用parse_url,你可以做这样的事情:
- 解析页面的URL到它的部分(方案,领域,路径,文件,查询,片段)
- 重建img url的url,具体取决于img url的方式。
- 图网址开头是“/”,这是一个绝对URL,所以我们建立的图像网址像
"$scheme://$domain$img_url"
- 图网址没有以“/”开头,所以它是相对的,所以我们所建立的图像网址像
"$scheme://$domain/$path/$img_url"
。如果img_url是“.././"-style”,这也是有效的,因为那些将被服务器解析。
- 图网址开头是“/”,这是一个绝对URL,所以我们建立的图像网址像
您可能还需要排除与方案或域启动IMG的url( 'XX://' 或 'XX.XX /')。
0
接受的答案没有考虑以//开头的src。这使得该计划根据原点而开放式结束。我认为他们的答案中还有一个遗漏的冒号。这是我的稍微修改版本,似乎工作正常。注意它使用PHP7语法。
function getAbsoluteImageUrl($pageUrl,$imgSrc)
{
$imgInfo = parse_url($imgSrc);
var_dump(parse_url($imgSrc));
if (!empty($imgInfo['host'])) {
//img src is already an absolute URL
if (substr($imgSrc,0,2) == '//') {
return (parse_url($pageUrl)['scheme'] ?? "http") . ":" . $imgSrc;
} else {
return $imgSrc;
}
}
else {
$urlInfo = parse_url($pageUrl);
$base = $urlInfo['scheme'].'://'.$urlInfo['host'];
if (substr($imgSrc,0,1) == '/') {
//img src is relative from the root URL
return $base . $imgSrc;
}
else {
//img src is relative from the current directory
return
$base
. substr($urlInfo['path'],0,strrpos($urlInfo['path'],'/'))
. '/' . $imgSrc;
}
}
}
相关问题
- 1. 在绝对网址和相对网址的javascript中获取
- 2. 如何从xpath获取绝对网址?
- 3. 如何从网页的HTML中获取绝对网址
- 4. html/php:如何处理绝对网址?
- 5. 如何在RSS中从CDATA获取<img> src?
- 6. 获取SharePoint绝对站点网址
- 7. 如何获取<ice:graphicImage>元素的网址?
- 8. 从相关网址获取绝对网址。 (IE6的问题)
- 9. 设置图像大小<img></img>,从数据库中获取
- 10. 获取所有<img>元素在网页上
- 11. 如何从xml文件中获取<img> src值?
- 12. 使用.children()获取<img>元素
- 13. xhtml在<img .... />和<img ...>之间的区别</img>?
- 14. 如何在iframe中定位<img>?
- 15. <img>里面<a>获取蓝色边框
- 16. PHP - 获取<br>和<br>
- 17. 如何获得<g>组内对象的绝对坐标?
- 18. 如何为我的网站使用php创建绝对网址?
- 19. z-index> css background-img>绝对img> p标记
- 20. 如何获取Foo <?>对象的<?>值?
- 21. JSOUP从html中提取绝对网址
- 22. 在通过HTTP POST获取的html中插入<img>
- 23. 如何获取<img>标记在webview的ontouchListner中的位置
- 24. 如何从Visual Studio 2012中的directory_iterator获取绝对路径<filesystem>
- 25. 如何获得主塔中的绝对网址?
- 26. 如何使用<amp-img>标签替换HTML中的<img>标签?
- 27. 如何获得网址如果是这样的<keyword>?
- 28. 如何获取文本显示<IMG>标签
- 29. 获取网站根目录的基址(绝对/相对url)
- 30. 如何只获取一段网址? (PHP)
这是假设它是本地图像。我认为OP需要一个URL。 – 2009-12-29 02:05:19
这不是我想要的... – user198729 2009-12-29 02:08:42
需要更多的说明,绝对url?!你的意思是基地网址?一个例子可能有帮助! – sepehr 2009-12-29 02:10:29