专栏首页大白技术控的技术自留地代码实现PHP web服务器下绝对路径到Web网址的转换

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

代码实现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网址...

<?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:

<?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/>';
?>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • dbms_xplan.display_awr方式获取执行计划的实验和之前的误导

    《查看Oracle执行计划的几种常用方法-系列1》(http://blog.csdn.net/bisal/article/details/38919181)这篇...

    bisal
  • PHP JSON使用实例

    由于json只接受utf-8编码的字符,所以json_encode()的参数必须是utf-8编码,否则会得到空字符或者null。当中文使用GB2312编码,或者...

    明哥的运维笔记
  • nginx 反向代理循环跳转问题

    循环跳转,nginx条件判断跳出 在nginx中配置以上反向配置,死活都无法正常跳转。

    明哥的运维笔记
  • 适合初学者对Yaf框架的学习(一)

      最近接触到Yaf框架,从最初按照鸟哥惠新宸的写的关于Yaf手册,到自己写一个hello world 程序,对于我这个新手来说还是蛮曲折的,大家都知道yaf框...

    joshua317
  • WordPress使用CDN后显示真实IP地址

    WordPress在开启cdn之后会导致所有的访客用户的IP地址变成cdn的节点地址,导致无法分辨那个用户的归属地,如果您的评论有这个归属地的识别功能,有没有做...

    空木白博客
  • Web新标准:Ajax 的一些资源汇总

         最近阅读技术新闻的时候Ajax这个名词不时地跳出来,说实在的我已经在我的english blog和这里列举了很多Ajax的资源了。无奈还要给大家分...

    田春峰-JCJC错别字检测
  • PHP基础——PHP数组

    其中,数字索引数组是指其key为数字,而后者可以使用字符串作为其key,这相当于map。

    zhaozhiyong
  • 关于LNMP 环境open_basedir restriction in effect报错问题

    在lnmp环境中,需要操作/data/log/walle/目录,但是提示报错没有权限。

    明哥的运维笔记
  • PHP基础——字符串的常用操作

    在PHP中使用trim()函数去除字符串左右的空格和特殊字符,使用rtrim()函数去除字符串右侧的空格和特殊字符,使用ltrim()函数去除字符串左侧的空格和...

    zhaozhiyong
  • Windows下wnmp快速部署

    C:\Users\Administrator\Desktop\Wnmp\php5.6\php.ini 

    明哥的运维笔记

扫码关注云+社区

领取腾讯云代金券