我正在重写我的网站,将其从ColdFusion更改为PHP。当我正在进行更改和测试时,我正在使用我儿子的域名下的子文件夹。我遇到过一个我以前见过的问题,但是之前我已经能够通过在路径前放几个..或/来修复它。
在测试过程中,我发现其中一些路径有效,而有些路径则没有。它似乎有点随机。因此,它使测试变得有点困难,事实上,在我正在研究的其中一个页面上,除非我把完整的路径放在一边,否则我无法完成任何工作。但是,这会破坏使用数据库的目的。
(是的,PHP变量正在运行。)
有没有人知道确定的修复方法?
<img src="..$ArtFilePath" title="$Title" alt="$Title">
<img src="/$ArtFilePath" title="$Title" alt="$Title">
<img src="/PHP2012/$ArtFilePath" title="$Title" alt="$Title">
<img src="http://markdinwiddie.com/PHP2012/artwork/Drawings/Boy.jpg" title="$Title" alt="$Title">
答案 0 :(得分:3)
绝对路径网址
调用绝对路径,因为它们引用了非常具体的位置,包括域名。 Web元素的绝对路径通常也称为URL。例如,此网页的绝对路径为:http://webdesign.about.com/library/weekly/aa040502a.htm
您通常使用域的绝对路径指向另一个域上的Web元素而不是您自己的域。例如,如果我想链接到平面设计指南的网站 - 我需要在网址中包含该网址:http://graphicdesign.about.com/
。因此,她的词汇表条目的链接如下所示:
<a href="http://graphicdesign.about.com/library/glossaries/web/blabsoluteurl.htm"> ...</a>
如果您指的是与您所在域名相同的网络元素,则无需在链接路径中使用域名。只需离开域名,但请确保在域名后面加上第一个斜杠(/
)。
例如,初学者资源中心有以下网址:http://webdesign.about.com/library/beginning/bl_begin.htm
如果我要从我网站上的其他网页链接到此网址,我可以通过以下方式链接到该网址:
<a href="/library/beginning/bl_begin.htm">...</a>
在大多数网站上使用绝对路径(没有域名)是个好主意。此格式可确保无论您在何处放置页面,链接或图像都可以使用。这似乎是使用更长链接的愚蠢理由,但如果您在网站上的多个页面和目录之间共享代码,使用绝对路径将加快维护。
相对路径网址
相对路径会根据链接所在的页面而变化。使用相对路径创建链接有几个规则:
与页面相同的目录中的链接没有列出路径信息 文件名 列出的子目录没有任何前面的斜杠 每周/文件名 链接一个目录列为
../filename
如何确定相对路径:
确定您正在编辑的页面的位置。
本文位于我的网站上的/library/weekly
文件夹中。
确定要链接到的页面或图像的位置。
初学者资源中心位于:/library/beginning/
比较位置并决定如何指向它
在本文中,我需要升级一个目录(to/library
),然后返回到开始目录
使用上面列出的规则编写链接:
...
答案 1 :(得分:1)
这实际上取决于您的目录结构。我相信您知道,../
将从当前工作目录上升一级,/
将转到根目录。 (注意:您的Web服务器根目录,不一定是您计算机的根目录。)
为了保持一致性,假设您有一个名为img
的网络服务器根的子目录,那么/img/$filename
应始终解析为您期望的内容。
答案 2 :(得分:1)
<?php
$path1='C:/ff/ss.html';
$file=file_get_contents($path 1);
$dom = new DOMDocument;
@$dom->loadHTML($file);
$links = $dom->getElementsByTagName('img');
//extract img src path from the html page
foreach ($links as $link)
{
$re= $link->getAttribute('src');
$a[]=$re;
}
$oldpth=explode('/',$path1);
$c=count($oldpth)-1;
$fname=$oldpth[$c];
$pth=array_slice($oldpth,0,$c);
$cpth=implode('/',$pth);
foreach($a as $v)
{
if(is_file ($cpth.'/'.$v))
{
$c=explode('/',$v);
$c[0]="xyz007";
$f=implode('/',$c);
$file=str_replace ($v,$f,$file);
}
}
$path2='C:/mail/newpath/';
$wnew=fopen($path2.$fname,'w+');
fwrite($wnew,$file);
?>
答案 3 :(得分:0)
完整路径是最好的。
您可以为域名/子域创建另一个变量,然后在链接中使用完整路径。
您还可以使用echo gethostname();
或php_uname('n');
答案 4 :(得分:0)
说到路径,(不是网址),从/
开始的所有内容都是绝对路径,并且可以从任何子文件夹中运行。
因此,从/
开始并开始工作 - 它也可以在整个网站上运行。
根本没有使用网站地址。 http://markdinwiddie.com
必须仅用于处理其他网站,不应用于本地链接。
答案 5 :(得分:0)
如果您希望它动态工作,并且当您将其移动到服务器时,请创建一个完整路径变量,例如$dir = "http://markdinwiddie.com/PHP2012";
或$dir = "/PHP2012";
,然后调用您的图像:
<img src="$dir/$ArtFilePath" title="$Title" alt="$Title">
答案 6 :(得分:0)
我不太确定你想要什么,但你可以拥有类似的东西:
<img scr="http://markdinwiddie.com/PHP2012/<?php echo $variable; ?>/<?php echo $anothervariable; ?>/" title="<?php echo $Title; ?>" alt="<?php echo $Title; ?>">
这将使URL的'http://markdinwiddie.com/PHP2012/'部分到位,然后您可以使用数据库中的变量来填充链接的其他部分。 ($ variable是URL的一部分,$ anothervariable是URL的第二部分。
这会回应:(提供$ variable = hi123,$ anothervariable = two2,$ title = tilt)
<img scr="http://markdinwiddie.com/PHP2012/hi123/two2/" title="tilt" alt="tilt">
希望能回答你的问题(或至少有帮助)。