使用PHP将相对路径转换为绝对URL
如何使用php将相对路径转换为绝对URL?
How to, using php, transform relative path to absolute URL?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如何使用php将相对路径转换为绝对URL?
How to, using php, transform relative path to absolute URL?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(14)
我喜欢 jordanstephens 从链接中提供的代码!我投了赞成票。 l0oky 启发我确保该函数与端口、用户名和密码 URL 兼容。我的项目需要它。
I love the code that jordanstephens provided from the link! I voted it up. l0oky inspired me to make sure that the function is port, username, and password URL compatible. I needed it for my project.
添加了对保留当前查询的支持。对 ?page=1 等有很大帮助...
Added support to keep the current query. Helps a lot for ?page=1 and so on...
Web 浏览器使用页面 URL 或 基本标记 来解析相对 URL。
该 PHP 脚本旨在解析相对于基本 URL 的 URL。
测试
结果
A web browser uses the page URL or the base tag to resolve relative URLs.
This PHP script is designed to resolve a URL relative to a base URL.
Test
Result
我更新了该函数以修复以“//”开头的相对 URL,从而提高了执行速度。
I updated the function to fix relative URL starting with '//' improving execution speed.
实际上不是关于转换路径而不是网址的问题吗? PHP 实际上有一个用于此目的的函数:realpath()。您唯一应该注意的是符号链接。
PHP 手册中的示例:
Wasn't in fact the question about converting path and not url? PHP actually has a function for this: realpath(). The only thing you should be aware of are symlinks.
Example from PHP manual:
一个简单的方法是使用 phpUri 一个小型 php 库用于将相对 URL 转换为绝对 URL。
用法很简单:
您甚至不需要检查传递给
join
的路径实际上是相对的。如果它是绝对的,那么parse
将返回它。A easy way to do this is using phpUri a small php library for converting relative urls to absolute.
Usage is simple:
You don't even need to check that the path passed to
join
is actually relative. If it is absolute thenparse
will return it.如果您的项目中已经有 Guzzle,您可以利用它的 URL 实现:
If you already have Guzzle in your project you can utilize its URL implementation:
如果相对目录已经存在,这将完成这项工作:
If the relative directory already exists this will do the job:
我使用了相同的代码: http://nashruddin.com/PHP_Script_for_Converting_Relative_to_Absolute_URL
但我对其进行了一些修改,因此如果基本 url 包含端口号,它将返回其中包含端口号的相对 URL。
希望这对某人有帮助!
I used the same code from: http://nashruddin.com/PHP_Script_for_Converting_Relative_to_Absolute_URL
but I modified It a little bit so If base url contains PORT number it returns the relative URL with port number in it.
Hope this helps someone!
此函数会将相对 URL 解析为
$pgurl
中给定的当前页面 URL,不使用正则表达式。它成功解析:/home.php?example
类型、same-dir
nextpage.php
类型、../...../.../ Parentdir
类型、完整的
http://example.net
url和速记
//example.net
url用法示例:
nodots() 必须在 URL 转换为绝对 URL 之后调用。
点函数有点多余,但可读、快速、不使用正则表达式,并且可以解析 99% 的典型 url(如果你想 100% 确定,只需扩展开关块以支持 6 个以上的点,尽管我从来没有在 URL 中见过这么多点)。
希望这有帮助,
This function will resolve relative URL's to a given current page url in
$pgurl
without regex. It successfully resolves:/home.php?example
types,same-dir
nextpage.php
types,../...../.../parentdir
types,full
http://example.net
urls,and shorthand
//example.net
urlsUsage Example:
nodots()
must be called after the URL is converted to absolute.The dots function is kind of redundant, but is readable, fast, doesn't use regex's, and will resolve 99% of typical urls (if you want to be 100% sure, just extend the switch block to support 6+ dots, although I've never seen that many dots in a URL).
Hope this helps,
您可以使用此作曲家包来做到这一点。
https://packagist.org/packages/wa72/url
将 URL 字符串解析为对象
添加和修改查询参数
设置和修改url的任何部分
测试 URL 与 PHP 风格的查询参数的相等性
方式
将绝对、主机相对和协议相对 url 转换为
相对,反之亦然
You can use this composer package to do that.
https://packagist.org/packages/wa72/url
Parse URL strings to objects
add and modify query parameters
set and modify any part of the url
test for equality of URLs with query parameters in a PHP-fashioned
way
supports protocol-relative urls
convert absolute, host-relative and protocol-relative urls to
relative and vice versa
这符合 @jordansstephens 的答案,不支持以“//”开头的绝对 url。
This make suit of @jordansstephens's answer that doesn't support absolute url begins with '//'.