我正在尝试用 php 抓取 img src,我可以很好地获取 src,但是如果 src 不包含完整路径,那么我无法真正重用它。有没有办法使用php获取图像的完整路径(如果使用右键菜单,浏览器可以获取它)。
IE。如何获取包含以下两个示例之一中的域的完整路径?
src="../foo/logo.png"
src="/images/logo.png"
Thanks,
Allan
您不需要正则表达式...只需要一些耐心。我真的不想为你编写代码,只是检查 src 是否以以下开头http://
,如果没有,则有 3 种不同的情况。
- 如果它以
/
然后前置http://domain.com
- 如果它开始于
..
你必须split完整的 URL 和砍下碎片直到 src 以 a 开头/
- 否则(以字母开头),采用完整的域,并且将其剥离到最后一个斜杠然后附加 src URL。
或者......偷懒并窃取这个脚本
$url = "http://www.goat.com/money/dave.html";
$rel = "../images/cheese.jpg";
$com = InternetCombineURL($url,$rel);
// Returns http://www.goat.com/images/cheese.jpg
function InternetCombineUrl($absolute, $relative) {
$p = parse_url($relative);
if($p["scheme"])return $relative;
extract(parse_url($absolute));
$path = dirname($path);
if($relative{0} == '/') {
$cparts = array_filter(explode("/", $relative));
}
else {
$aparts = array_filter(explode("/", $path));
$rparts = array_filter(explode("/", $relative));
$cparts = array_merge($aparts, $rparts);
foreach($cparts as $i => $part) {
if($part == '.') {
$cparts[$i] = null;
}
if($part == '..') {
$cparts[$i - 1] = null;
$cparts[$i] = null;
}
}
$cparts = array_filter($cparts);
}
$path = implode("/", $cparts);
$url = "";
if($scheme) {
$url = "$scheme://";
}
if($user) {
$url .= "$user";
if($pass) {
$url .= ":$pass";
}
$url .= "@";
}
if($host) {
$url .= "$host/";
}
$url .= $path;
return $url;
}
From http://www.web-max.ca/PHP/misc_24.php
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)