有几个我希望包含在“父”文件中的html代码片段。
父文件包含相对路径。
这些片段还包含相对路径,相对于它们的位置 - 与它们将包括在其中的文件无关。
例如,一个片段是标题,对网站上的所有页面都是通用的。包含html,同时保留包含文件的路径
这将被插入到现有的页面如下:
实施例是非常大大简化,实际的文件有许多路径。
我不控制将被包含的文件。
这意味着我无法将PHP变量添加到网址。
我也无法以任何方式使路径绝对路径。
对于包含的文件 - 因为我无法控制html。
所有文件 - 因为最终的页面dev'd几台机器上,且必须在是否http://www.mysite/myfile,http://localhost/mysite/myfile,甚至http://127.0.0.1/~/anyuser/ ...
一些想法我有:
php include:include '../includes/header.txt';
路径与其包含的文件相关。
包括每个片段作为一个iFrame:
页面布局不是很友好的iFrame。除了SEO &页面加载问题。
解析页面并使用解析器替换所有路径。
这些页面不是100%有效的HTML(无法控制它们),解析器会咳嗽并翻滚死亡。除了可笑的服务器负载。
在每一个真正的浏览器使用base tags
精美的作品。
但Internet Explorer 7,8和9只是忽略基本标记(头部以外)。 一个基本标记可能会在头部声明,但页面上的所有其他路径(可能在CSS文件中)将全部错误。
BaseTag用法:
echo "";
include '../includes/header.txt';
echo "";
?>
据我所知,这正是为什么基地创建变量,并在每一个体面的浏览器支持 - 这样我们就可以在一个中间HTML文件,告诉浏览器我即将包含第二个HTML文件,并且所有路径都应该相对于新位置。这在IE6中运行得非常好,我认为必须有一些逻辑放弃对它的支持。一些逃脱Opera,Webkit和Mozilla的逻辑。 我可以找到关于这个问题的唯一的帖子赞美微软放弃支持,甚至没有给出什么暗示为什么下降支持公认的标准(在所有浏览器中使用的时间)和有用的是一件好事。
现在,我讨厌以热情为IE开发,但不能忽视它。他们仍然有近三分之一的用户!
那么,如何包含相对路径的php片段,并保持它们相对于被包含的文件?
任何人都可以请告诉我,如果有任何理由在所有MS丢弃基地支持,或可以做些什么来帮助恢复?
2010-11-10
SamGoody
+0
为什么要将基本标签放置在头部的任何位置?你想包括相关的PHP脚本(服务器端)或图像(客户端)?从你的问题来看,这不是很清楚。 –
2010-11-10 21:45:37
+0
我没有发现你的问题非常清楚,但它似乎与include()或PHP没有任何关系。 include()语句的结果与包含文件的内容在源文件中的该位置粘贴的结果相同。所以,想象一下这个HTML就在那里,并且你没有使用include()。现在你的问题与include()无关,只是想知道你想如何处理应用程序中的路径。也许你应该为项目中更高级别的图像定义一个基本的URL,并在你的CSS中使用它。 –
2010-11-10 21:50:53
+0
@Phil - 我试图将HTML中包含的路径包含到图像,JavaScript或CSS文件中。我将基本标签放在包含的内容之前的原因是,包含的内容具有与该页面的其余部分不同的根,该部分与位置对象相关。如果我把基本标签放在头部,它会使页面上的所有路径相对于其他位置......为什么我要这样做? –
2010-11-11 08:53:00