PHP是否有一个本机函数,它返回您使用相对路径声明的文件的完整URL?我需要:"http://www.domain.com/projects/test/img/share.jpg"
来自"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"
另外,我的路径会有所不同,具体取决于我是否在没有index.php的情况下从/test/index.php
或test/
进行访问,而且我不想硬编码是否&# 39; s http或https。
有人有解决方案吗?我将这些文件发送给将上传到其服务器的其他人,因此文件夹结构将不匹配"/home/user/www.domain.com/"
答案 0 :(得分:2)
echo preg_replace(preg_quote($_SERVER['DOCUMENT_ROOT']), 'http://www.example.com/', realpath('img/share.jpg'), 1);
preg_replace
的论点:
preg_quote($_SERVER['DOCUMENT_ROOT'])
- 获取文档根目录(例如/home/user/www.domain.com/
)并使其成为与preg_replace
一起使用的正则表达式。'http://www.example.com/'
- 用。替换正则表达式匹配的字符串。realpath('img/share.jpg')
- 包含文档根目录的文件路径的字符串。1
- 替换正则表达式匹配的次数。答案 1 :(得分:1)
怎么样
echo preg_replace("'". preg_quote($_SERVER['DOCUMENT_ROOT']) ."'",'http://www.example.com/', realpath('img/share.jpg'), 1);