php绝对路径相对路径
‘壹’ php如何将相对路径转换为绝对路径
给你一个函数:
$content:网页内容;
$feed_url:网站域名;
<?
function relative_to_absolute($content, $feed_url) {
preg_match('/(http|https|ftp):\/\//', $feed_url, $protocol);
$server_url = preg_replace("/(http|https|ftp|news):\/\//", "", $feed_url);
$server_url = preg_replace("/\/.*/", "", $server_url);
if ($server_url == '') {
return $content;
}
if (isset($protocol[0])) {
$new_content = preg_replace('/href="\//', 'href="'.$protocol[0].$server_url.'/', $content);
$new_content = preg_replace('/src="\//', 'src="'.$protocol[0].$server_url.'/', $new_content);
} else {
$new_content = $content;
}
return $new_content;
}
?>
‘贰’ php文件上传,一般是保存在绝对路径还是相对路径
一般是保存web访问的绝对路径,如这个文件以后可以通过
http://example.com/uploads/file/filename访问,那么就保存为/uploads/file/filename。当然最好是把路径和文件名分开保存。这样输出的时候就可以直接echo
$row['path']
.
$row['filename']了
‘叁’ phpcms 调用出来的栏目,文章链接都是绝对路径,怎么修改为相对链接,谢谢!
cachesconfigssystem.php
将所有绝对路径改为相对路径
'js_path'=>'/statics/js/',//CDNJS
'css_path'=>'/statics/css/',//CDNCSS
'img_path'=>'/statics/images/',//CDNimg
'app_path'=>'/',//动态域名配置地址
‘肆’ php如何设置相对路径
相对路径是相对于当前执行的脚本而言的.
[./]代表和脚本相同目录下,[../]代表上一级目录.
‘伍’ PHP绝对路径的问题
给你看篇文章,希望对你有帮助:
引言:
关于PERL与PHP中的包含路径一直是一个比较难解的问题,主要是与操作系统和WEB服务器有关,不可能非常智能化的解决这个路径问题。相对于PERL,PHP的路径好得多,解决起来也容易得多,因为PHP的相对路径在PHP程序中的任何场合都可以使用,而不象PERL在某些语句中必须用绝对路径而导致移植的极其复杂。
基于此,在PHP中,我设计了一个绝对稳妥的解决方案,如下所述。
原则:
使用相对路径,但在相对路径中用绝对路径(有点绕,待会儿详解),一是可以保证可移植性,二是可以方便地修改,三是公式化且结构清晰明了,易于扩展。
步骤详解:
1、先确定好一个程序的根目录,注意是文件系统下的,不是WEB服务器下的虚拟目录,不过一般情况下该目录下的子目录的相对路径与URL下该目录的虚拟子目录是相同的。
2、在定义好的程序根目录下的每个子目录下(其实不一定是每个,根据需要)建立一个settings.php,里面定义一个变量或是常数(常数比较好,因为作用域比较大),如APPROOT,但这个APPROOT却不是绝对路径,而是该目录相对于你指定的程序根目录的相对路径。
3、在此目录下的所有程序入口文件(也即第一个包含其它文件的文件,或是允许直接在浏览器中浏览的文件)中第一句写上require_once('settings.php');,但要注意,所有被包含文件最好不要加此句——其实加上也可以,因为你可以在settings.php中写上 if(!defined(APPROOT)) define(APPROOT, '../..');这类的语句以防重定义。
4、如果你要包含其它文件,无论是直接还是间接地包含,都可以写成 include(APPROOT.$path);,这里$path为被包含文件相对于你所指定的程序根目录的绝对路径。
原理:
定下的程序根目录是相对路径,但具体的目录位置是相对于那个根目录的绝对路径,两者组合起来就是具体文件相对于程序根目录的相对路径了。例如目录c:\wwwroot\app为你指定的程序根目录,然后有这么两个文件c:\wwwroot\app\a\index.php和c:\wwwroot\app\b\inc.php。对子目录a来说,APPROOT是'..',而对程序根目录来说,inc.php的绝对路径是$path='/b/inc.php',两者组合为'../b/inc.php'。如果要在index.php中包含inc.php就要写成include('../b/inc.php');,而这个路径不就正好是刚才组合而成的APPROOT.$path吗?
结论:
经过以上处理,各个路径绝对整齐划一,唯一罗嗦一点的就是每个目录下要定义一下这个APPROOT,但每个目录下只需在本目录的settings.php中定义一次就足够了。如果你整个程序只有一个入口文件,如index.php,而其它文件全部都是直接或是间接地被包含进这个唯一的入口文件的话,就只需在index.php的所在目录下的settings.php中定义一次就OK了。如果有朋友做过Delphi的工程并对工程文件研究过的话,就会发现我刚才说的一个程序只有一个主入口文件的情况与Delphi的工程十分相似,因为Delphi除了一个主程序文件(dpr文件),其余的全部是单元文件或是资源文件,都不能独立执行。在PHP中,如果这种情况出现,只需定义一次APPROOT,并在主程序文件中第一句话写成require_once('settings.php');,而以后所有的包含全都可以用include(APPROOT.$path);,就保证不会有任何问题,除非你不会写这个“包含文件相对于程序根目录的绝对路径”$path。
这个方法我用了不止一次,收效很好。另外还可以参考JSP的WEB-INFO中路径的定义方式。
我这个是以不变应万变的公式化的方案,如果有朋友有更好的方案,欢迎提出讨论!如有不明白的也欢迎提出。
‘陆’ 计算机菜鸟 问下文件路径的问题
../../aa.php 这个叫做相对路径,相对路径是相对于当前目录的路径. http://www..com/aa.php 或者 /home/www/xx/aa.php 这种叫绝对路径. 相对路径和绝对路径的应用相对作用:
一、使用绝对路径的好处
1.当别人采集或者抄袭你网站内容的时候,可能会把文章里的链接也一起采集过去,这样就为你增加了外链
2.当不能使用301跳转时
例如 a.com 这个域名不能实现301跳转到b.com时,那么在a.com这个网站上的链接(a.com/123.html)就采用硬编码修改链接为b.com/123.html,这样就算用户在a.com这个网站上点这个链接也是链接到b.com这个网站上,也可以让蜘蛛顺着这个链接爬到你想要收录的网站
3.使用绝对链接,就算移动网页的位置,也还是能链接到想要的URL位置(例如:a页面使用绝对路径链接到b页面,A--》B,那么不管a页面如何移动,只要b页面的位置不变都可以链接到)
4.使用绝对路径的网站能更好的让搜索引擎知道你的首选域
缺点是:
1.不方便本地测试,因为都是指向网络的绝对的地址,没有网络的情况下无法测试是否死链
(如果在本地测试时用相对地址,上传之后再修改为绝对地址,貌似要耗费很多时间,麻烦~)
2.如同优点3中提到的,如果b页面要发生移动,A页面就无法链接到B页面原来的地址
3.更改域名时,需要更改链接
二、相对路径的优缺点则刚好和绝对路径相反
优点是:
1.更改域名时,不需要更改链接
2.方便本地测试
缺点是:
1.容易被别人采集或抄袭,或者直接网站镜像。
资料来自: "http://www.3lian.com/e/2014/02-19/129611.html"
‘柒’ PHP 如何把 网页文件中的相对路径替换成 绝对路径
使用__FILE__先获得根目录,就好了。。。dirname(__FILE__);
‘捌’ php 如何将绝对路径转换成当前文件相对路径,URL转URI
假如主界面是在根目录,如index.php,相对路径就是:
lx/aaa/pr.php
lx/ccc/opo.php
lx/ccc/ddd/pok.php
==即tx目录与index.php是平行的、同等级的
‘玖’ PHP 如何把 网页文件中的相对路径替换成 绝对路径
这个要根据你的实际情况来看,如果你的文件内的所有已经设置了的绝对路径都相同,则可以先把所有的绝对路径替换为空
查找内容
<a
href="
www.qq.com/
替换内容
<a
href="
然后再按照楼上的方法,用
查找内容
<a
href="
替换内容
<a
href="
www.qq.com/
倘若你的绝对路径有不同的,方法也可用,先多次把已经有的绝对路径转换为空(即上面的第一步),最后再用一次第二步.
特殊情况特殊对待,一切还要根据你的实际情况来处理.这里只是一点建议,希望对你有帮助
‘拾’ PHP的include的相对路径和绝对路径问题一般都怎么解决的
建议定义入口文件,文件中所有目录的路径定义常量,写入绝对路径
如:$_SERVER['DOCUMENT_ROOT']."/文件夹路径/"
站点内所有路径都使用绝对路径