【问题标题】:How to get url path to file from absolute file path - Convert absolute path to url path - PHP如何从绝对文件路径获取文件的 url 路径 - 将绝对路径转换为 ​​url 路径 - PHP
【发布时间】:2021-10-18 17:22:42
【问题描述】:

我已将图像路径作为绝对文件路径存储在服务器磁盘上:

/var/www/u1234567/data/www/somesampledomain.xyz/mediaimages/48fa6c736b75e1da485656e97b7d76f9.png

我想将此绝对路径 -> 转换为 url 路径,例如:

https://somesampledomain.xyz/mediaimages/48fa6c736b75e1da485656e97b7d76f9.png

我可以用/var/www... 修剪这个不必要的部分。但是有没有更通用的方法,没有/var/www/u1234567/data/www/ 的硬编码部分?

【问题讨论】:

  • 你试过正则表达式吗?

标签: php url path


【解决方案1】:

你可以使用这个简单的 php 脚本

<?php
$link = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
echo("$link");
?>

它将显示您的完整网站网址以及当前文件,例如:http://site .com/file.php

【讨论】:

    【解决方案2】:

    我发现在全局配置文件中包含如下内容很有用:

    define('BASE_DIR', '/var/www/u1234567/data/www/somesampledomain.xyz/');
    define('BASE_URL', 'https://somesampledomain.xyz/');
    

    这对于在各个地方翻译 url 和路径很有用。虽然为了简单起见,它通常更像:

    define('BASE_DIR', realpath('../htdocs/'));
    

    那么你可以:

    $path = '/var/www/u1234567/data/www/somesampledomain.xyz/mediaimages/48fa6c736b75e1da485656e97b7d76f9.png';
    $url  = 'https://somesampledomain.xyz/mediaimages/48fa6c736b75e1da485656e97b7d76f9.png';
    
    function path_to_url($path) {
        return preg_replace('/^'.preg_quote(BASE_DIR, '/').'/', BASE_URL, $path, 1);
    }
    
    function url_to_path($url) {
        return preg_replace('/^'.preg_quote(BASE_URL, '/').'/', BASE_DIR, $url, 1);
    }
    
    var_dump(
        $url,
        path_to_url($path),
        $path,
        url_to_path($url)
    );
    

    输出:

    string(77) "https://somesampledomain.xyz/mediaimages/48fa6c736b75e1da485656e97b7d76f9.png"
    string(77) "https://somesampledomain.xyz/mediaimages/48fa6c736b75e1da485656e97b7d76f9.png"
    string(96) "/var/www/u1234567/data/www/somesampledomain.xyz/mediaimages/48fa6c736b75e1da485656e97b7d76f9.png"
    string(96) "/var/www/u1234567/data/www/somesampledomain.xyz/mediaimages/48fa6c736b75e1da485656e97b7d76f9.png"
    

    参考:

    【讨论】:

      猜你喜欢
      • 2015-01-24
      • 2016-12-11
      • 2016-07-23
      • 2012-08-27
      • 2015-11-15
      • 2014-01-28
      • 1970-01-01
      • 2017-10-08
      • 2016-11-19
      相关资源
      最近更新 更多