zoukankan      html  css  js  c++  java
  • 代码实现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/>';
    ?>



  • 相关阅读:
    support STL Viewer with WordPress On SAE
    个人自建网店(WordPress WooCommerce on SAE)集成支付宝支付
    问题解决: WordPress on SAE注册邮件无法发送
    移除Strorefront站点footer上的Storefront Design By WooThemes字样
    添加站点图标: 为SAE上的WordPress站点添加自己的Favicon
    在SAE上搭建自定义版本WordPress, 并用SAE Storage代替WordPress Uploads
    swift + xcode 新手上路
    Mac Yosemite下Android Studio环境问题集合
    分支(选择)语句
    Java入门
  • 原文地址:https://www.cnblogs.com/enjoy233/p/10408792.html
Copyright © 2011-2022 走看看