将我想要的几个html片段包含在“父”文件中 父文件包含相对路径 这些片段还包含相对于其位置的相对路径 - 而不是相对于它们将包含在其中的文件 例如,一个代码段是标题,对于网站上的所有页面都是通用的。
<div style='background:url(img/bg.jpg)'>
<img src='img/logo.png'>
</div>
这将插入现有页面,如下所示:
<div style='background:url(img/gradient.jpg)'>
<?php include '../includes/header.txt'; ?>
</div>
示例非常简化,实际文件有很多路径 我无法控制将要包含的文件 这意味着我无法将PHP变量添加到网址。
我也无法以任何方式使路径绝对 对于包含的文件 - 因为我无法控制html 对于所有文件 - 因为最终页面在几台计算机上都是开发的,无论是在http://www.mysite/myfile,http://localhost/mysite/myfile还是http://127.0.0.1/~/anyuser/都必须有效...
我有过一些想法:
include '../includes/header.txt';
BaseTag用法:
<?php
echo "<base href='$path_to_includes_folder' />";
include '../includes/header.txt';
echo "<base href='$path_based_on___file__' />";
?>
据我所知,这就是创建基本标记的原因,并且在每个体面的浏览器中都得到支持 - 这样我们就可以在一个HTML文件的中间告诉浏览器我将要包含第二个HTML文件,并且所有路径都应该相对于新位置。这在IE6中运行得非常好,我认为必须有一些逻辑来放弃对它的支持。一些逃脱Opera,Webkit和Mozilla的逻辑。 我可以在这个主题上找到的唯一帖子赞扬微软放弃了支持,但没有给出为接受标准 删除支持的原因(正在使用中)在当时的所有浏览器中)和有用的是一件好事。
现在,我讨厌用激情开发IE,但不能忽视它。他们仍然拥有近1/3的用户!
那么,如何将php片段与相对路径包含在一起,并将它们保存在相应的文件中呢?
任何人都可以告诉我,如果MS有任何理由放弃基础支持,或者可以采取哪些措施来帮助恢复它?
答案 0 :(得分:1)
对于这些情况,我使用以下内容,
$PROTOCOL = (!empty($_SERVER['HTTPS'])) ? 'https' : 'http';
$DOC_ROOT = $PROTOCOL.'://'.$_SERVER['SERVER_NAME'];
//The project path points to the root file (index.php, or whatever your index file is).
$projectRoot = dirname($DOC_ROOT.$_SERVER['SCRIPT_NAME']).'/';
然后你可以(使用你的例子)
<div style='background:url(<?php echo $projectRoot; ?>img/bg.jpg)'>
<img src='img/logo.png'>
</div>
这将为您提供动态绝对路径。