【问题标题】:PHP: How to get URL of relative filePHP:如何获取相关文件的 URL
【发布时间】:2015-02-08 01:07:16
【问题描述】:

PHP 是否有一个本机函数,可以返回您使用相对路径声明的文件的完整 URL?我需要得到:"http://www.domain.com/projects/test/img/share.jpg" from "img/share.jpg" 到目前为止,我已经尝试了以下方法:

realpath('img/share.jpg');
// Returns "/home/user/www.domain.com/projects/test/img/share.jpg"

我也试过了:

dirname(__FILE__)
// Returns "/home/user/www.domain.com/projects/test"

this answer 声明以下内容可以被客户端篡改:

"http://'.$_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI].'img/share.jpg"

另外,我的路径会有所不同,具体取决于我是从 /test/index.php 访问还是仅在没有 index.php 的情况下从 test/ 访问,并且我不想硬编码它是 http 还是 https。

有人对此有解决方案吗?我会将这些文件发送给另一个将上传到他们服务器的人,因此文件夹结构将不匹配"/home/user/www.domain.com/"

【问题讨论】:

  • 您可以添加答案并接受它,您也可以获得代表

标签: php url relative-path


【解决方案1】:
echo preg_replace(preg_quote($_SERVER['DOCUMENT_ROOT']), 'http://www.example.com/', realpath('img/share.jpg'), 1);

文档:preg_replacepreg_quote

preg_replace的论点:

  • preg_quote($_SERVER['DOCUMENT_ROOT']) - 获取文档根(例如,/home/user/www.domain.com/)并使其成为与 preg_replace 一起使用的正则表达式。
  • 'http://www.example.com/' - 替换正则表达式匹配的字符串。
  • realpath('img/share.jpg') - 包含文档根目录的文件路径字符串。
  • 1 - 替换正则表达式匹配的次数。

【讨论】:

  • 谢谢!但我想避免这种情况,因为我将文件发送给另一个将上传到他们自己服务器的人,我怀疑他们的文件夹结构会以/home/user/
  • @MarcoDelValle 更新!
  • 不幸的是,preq_replace 一直给我以下错误:Unknown modifier 'n' in... 经过一番挖掘,这是有效的代码:echo str_replace($_SERVER['DOCUMENT_ROOT'], 'http://www.domain.com', realpath('img/share.jpg')); 感谢您朝着正确的方向推动!
【解决方案2】:

怎么样

echo preg_replace("'". preg_quote($_SERVER['DOCUMENT_ROOT']) ."'",'http://www.example.com/', realpath('img/share.jpg'), 1);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-07
    • 2019-06-30
    • 2012-05-23
    • 2014-07-29
    • 1970-01-01
    相关资源
    最近更新 更多