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

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


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

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

2. 变量SERVER[HTTPHOST]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/>';
?>





作者:极客玩家
出处:https://geekzl.com

如果,您希望更容易地发现我的新文章,不妨点击一下绿色通道的关注我,亦可微信搜索公众号大白技术控关注我。

如果您觉得阅读本文对您有帮助,请点击一下右下方的推荐按钮,您的推荐将是我写作的最大动力!
版权声明:本文为博主原创或转载文章,欢迎转载,但转载文章之后必须在文章页面明显位置注明出处,否则保留追究法律责任的权利。如您有任何疑问或者授权方面的协商,请          .
posted @   大白技术控  阅读(772)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?

打赏

>>

欢迎打赏支持我 ^_^

扫描二维码打赏

了解更多

点击右上角即可分享
微信分享提示