【问题标题】:img src ="/" a path that works in all situationsimg src ="/" 适用于所有情况的路径
【发布时间】:2012-01-03 02:50:57
【问题描述】:

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

【问题讨论】:

标签: php html image


【解决方案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);
?>

【讨论】:

  • 嗨 Basil,格式化是故意的还是需要帮助?
【解决方案2】:

绝对路径网址

之所以这样称呼绝对路径,是因为它们指的是非常具体的位置,包括域名。 Web 元素的绝对路径通常也称为 URL。比如这个网页的绝对路径是:http://webdesign.about.com/library/weekly/aa040502a.htm

您通常使用域的绝对路径来指向与您自己的域不同的域中的 Web 元素。例如,如果我想链接到平面设计指南的网站 - 我需要在 URL 中包含域:http://graphicdesign.about.com/。因此,指向她的词汇表条目的链接如下所示:

<a href="http://graphicdesign.about.com/library/glossaries/web/blabsoluteurl.htm"> ...</a>

如果您指的是与您所在域相同的 Web 元素,则无需在链接路径中使用域名。只需省略域名,但请务必在域名后添加第一个斜杠 (/)。

例如,初学者资源中心的 URL:http://webdesign.about.com/library/beginning/bl_begin.htm 如果我要从我网站上的另一个页面链接到此 URL,我可以这样链接到它:

<a href="/library/beginning/bl_begin.htm">...</a>

在大多数网站上使用不带域名的绝对路径是个好主意。这种格式可确保无论您将页面放在何处,链接或图像都可以使用。这似乎是使用较长链接的愚蠢理由,但如果您在网站上的多个页面和目录之间共享代码,则使用绝对路径将加快您的维护速度。

相对路径网址

相对路径会根据链接所在的页面而变化。使用相对路径创建链接有几个规则:

与页面同目录的链接没有列出路径信息 文件名 列出的子目录没有任何前面的斜杠 每周/文件名 链接一个目录被列为

../filename

如何确定相对路径:

确定您正在编辑的页面的位置。 这篇文章位于我网站上的/library/weekly 文件夹中。 确定要链接到的页面或图像的位置。 初学者资源中心位于:/library/beginning/ 比较位置并决定如何指向它 从这篇文章中,我需要升级一个目录 (to/library),然后返回到开始目录 使用上面列出的规则编写链接: ...

【讨论】:

    【解决方案3】:

    如果您希望它动态工作并且当您将其移动到服务器时,请创建一个完整路径变量,例如$dir = "http://markdinwiddie.com/PHP2012";$dir = "/PHP2012";,然后调用您的图像:

    <img src="$dir/$ArtFilePath" title="$Title" alt="$Title">
    

    【讨论】:

    • 你又一次...注意到他说他正在“我儿子的域名下的子文件夹”中测试它的部分??他需要动态吗?你甚至会禁止框架中的 base_url 方法吗? 翻滚
    【解决方案4】:

    说到 paths,(不是 url),从 / 开始的所有内容都是绝对路径,可以在任何子文件夹中使用。

    因此,从/ 开始就可以了——它也可以在整个站点上运行。

    站点地址根本没有用。 http://markdinwiddie.com 只能用于寻址其他站点,不应用于本地链接。

    【讨论】:

      【解决方案5】:

      我不太确定你想要什么,但你可以有类似的东西:

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

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

      【讨论】:

        【解决方案6】:

        这实际上取决于您的目录结构。我相信您知道,../ 将从当前工作目录上升一级,/ 将进入根目录。 (注意:您的网络服务器根目录,不一定是您机器的根目录。)

        为了保持一致性,假设您的网络服务器根目录有一个名为 img 的子目录,那么 /img/$filename 应该始终解析为您所期望的。

        【讨论】:

          【解决方案7】:

          完整路径最好。

          您可以为域名/子域创建另一个变量,然后在链接中使用完整路径。

          您还可以根据在给定时刻运行脚本的服务器,使用echo gethostname();php_uname('n'); 使其成为有条件的

          【讨论】:

            猜你喜欢
            • 2020-04-19
            • 2015-10-02
            • 2021-02-12
            • 2014-01-20
            • 2014-01-01
            • 1970-01-01
            • 2015-11-14
            • 2016-07-22
            • 2012-10-20
            相关资源
            最近更新 更多