前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >代码实现PHP web服务器下绝对路径到Web网址的转换

代码实现PHP web服务器下绝对路径到Web网址的转换

作者头像
Enjoy233
发布2019-03-05 14:40:59
1.1K0
发布2019-03-05 14:40:59
举报

代码实现PHP web服务器下绝对路径到Web网址的转换

代码中用到几个系统变量或常量:

1. 路径中各目录分隔字符 DIRECTORY_SEPARATOR(常量),Windows下DIRECTORY_SEPARATOR是\\,Linux下是/ 。

2. 变量$_SERVER['HTTP_HOST']可以返回Web服务器带端口的主机地址(比如 localhost:8080),$_SERVER['SERVER_NAME']可返回不带端口的主机地址。

3. 常量__FILE__返回当前文件的绝对地址,而dirname(__FILE__)返回当前文件所在目录的绝对地址...

另外,提一下变量$_SERVER['PHP_SELF'] 该变量返回当前执行脚本的文件名,与document root有关。例如,在地址为http://example.com/test.php/foo.bar 的脚本中使用$_SERVER['PHP_SELF'] 将得到 /test.php/foo.bar

代码1:

文件名: path_test.php

实现将web服务器下绝对路径(文件路径或目录的路径皆可)转换为Web网址...

代码语言:javascript
复制
<?php
// echo $_SERVER['SERVER_NAME'];
echo $_SERVER['HTTP_HOST'].'<br/>';

function Path2webURL($path)  // Absolute File path or Directory path to WebURL
{
	$wwwDir='C:/AppServ/www';
	$path=str_replace(DIRECTORY_SEPARATOR, '/', $path); // 将DIRECTORY_SEPARATOR都替换为/,便于统一处理
	$ServerDomain=$_SERVER['HTTP_HOST'];  // with port
	$webURL='http://'.str_ireplace($wwwDir, $ServerDomain, $path);
	return $webURL;
}

$test1='C:/AppServ/www/ccc';
$test2=__FILE__;  // Windows下DIRECTORY_SEPARATOR是\\,Linux下是/
echo $test2.'<br/>+++++<br/>';

$test3=dirname(__FILE__);  // Windows下DIRECTORY_SEPARATOR是\\,Linux下是/
echo $test3.'<br/>+++++<br/>';

echo Path2webURL($test1).'<br/>------<br/>';
echo Path2webURL($test2).'<br/>------<br/>';
echo Path2webURL($test3).'<br/>------<br/>';
?>

代码1中需要根据具体的操作系统去手动调整Windows或Linux下的目录(即:变量$wwwDir),改进一下,可以写出代码2,对Windows或Linux都通用...

代码2:

代码语言:javascript
复制
<?php
// echo $_SERVER['SERVER_NAME'];
echo $_SERVER['HTTP_HOST'].'<br/>';

function Path2webURL($path)  // Absolute File path or Directory path to WebURL
{
	$wwwDir=array('C:/AppServ/www','/var/www');  // 分别设置Windows和Linux下www文件夹所在路径
	$path=str_replace(DIRECTORY_SEPARATOR, '/', $path); // 将DIRECTORY_SEPARATOR都替换为/,便于统一处理
	$ServerDomain=$_SERVER['HTTP_HOST'];  // with port
	$webURL='http://'.str_ireplace($wwwDir, array($ServerDomain, $ServerDomain), $path);
	return $webURL;
}

$test1='C:/AppServ/www/ccc';
$test2=__FILE__;  // Windows下DIRECTORY_SEPARATOR是\\,Linux下是/
echo $test2.'<br/>+++++<br/>';

$test3=dirname(__FILE__);  // Windows下DIRECTORY_SEPARATOR是\\,Linux下是/
echo $test3.'<br/>+++++<br/>';

$test4='/var/www/ddd';

echo Path2webURL($test1).'<br/>------<br/>';
echo Path2webURL($test2).'<br/>------<br/>';
echo Path2webURL($test3).'<br/>------<br/>';
echo Path2webURL($test4).'<br/>------<br/>';
?>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年05月24日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档