img src =“/”一个适用于所有情况的路径

时间:2011-11-21 16:01:30

标签: php html image

我正在重写我的网站,将其从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">

7 个答案:

答案 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">

希望能回答你的问题(或至少有帮助)。