sqrt-pro / url
SQRT.pro URL 是 SQRT 框架的一部分
Requires
- php: >=5.3.0
- sqrt-pro/helpers: dev-master
- sqrt-pro/tag: dev-master
- true/punycode: ~1.0
This package is not auto-updated.
Last update: 2024-09-24 02:59:30 UTC
README
术语
由符号 /
分隔的 URL 部分称为参数。例如:/my/cool/page/
。在这种情况下,参数的顺序很重要,因为寻址是从 1 开始按编号进行的。即解析上述示例后,将得到以下参数集
1 => 'my'
2 => 'cool'
3 => 'page'
如果需要传递命名参数,则将其以 "名称:值" 的形式传递,例如:/id:12/height:yahoo/
。在这种情况下,参数的顺序无关紧要。参数和参数可以组合使用,但参数始终位于 URL 的末尾。例如:/my/pretty/what:page/what:site/
。
如果指定了具有相同名称的多个值,则它们被视为数组。例如:/id:10/id:11/id:12/
。
此外,还可以使用 "文件名",例如 /hello/world.txt
。它与属性相关联,但不包含在属性列表中。
URL 解析
一切从创建 URL 对象开始。解析地址发生在调用 parse()
时,可以传递字符串(完整或绝对路径)或数组(将作为参数集处理)。同样,可以在构造函数中传递参数,允许传递多个对象作为参数。
以下调用具有相同的结果
$u = new URL();
$u->parse('/my/page/id:12/hello:world/');
$u = new URL('/my/page/id:12/hello:world/');
$u = new URL('my/page', array('id'=>12, 'hello'=>'world'));
$u = new URL('my', 'page/id:12', array('hello'=>'world'));
从地址中获取数据
过滤输入数据
在大多数用于从地址获取数据的函数中,传递参数 $filter
- 它允许检查和过滤从地址获取的数据。过滤器可以是可调用的、正则表达式或包含有效值的数组。如果没有值或它不符合过滤器,则返回 $default。
参数和参数
地址解析后,URL 对象提供几种访问参数和参数的方法
hasArgument($num)
- 检查是否存在参数;hasParameter($name)
- 检查是否存在参数;getArgument($num, $filter = null, $default = false)
- 获取参数值,如果已设置,否则返回 $default;getParameter($name, $filter = null, $default = false)
- 获取参数值,如果已设置,否则返回 $default;getParameterAsArray($name, $filter = null, $default = array())
- 如果设置了值,则将参数作为数组获取,否则返回 $default;getArguments()
- 获取所有参数的数组;getParameters()
- 获取所有参数的数组。
要更改参数或参数,可以使用以下功能
removeArguments(array $arguments = null)
- 清除参数。在 $arguments 中可以直接传递新的参数数组;removeParameters(array $parameters = null)
- 清除参数。在 $parameters 中可以直接传递新的参数数组;setArgument($num, $value = null)
- 设置参数值。setParameter($name, $value = null)
- 设置参数值。addArgument($arg)
- 添加参数;addParameter($name, $parameter)
- 添加参数;addArguments($mixed, $_)
- 添加参数。可以直接通过字符串或数组传递多个参数;addParameters($array, $_)
- 添加参数。可以直接传递多个数组;
文件名和扩展名
如果指定了文件名,则可以访问它
getFileName($strict = false)
- 获取文件名。如果未指定,则取最后一个参数的值。getFileExtension($default = false)
- 获取文件扩展名或 $default 如果未指定。
主机、方案和子域
如果解析地址时指定了绝对路径,则 URL 对象包含有关域和方案的信息。如果没有传递地址,则默认域为 https://
。
访问数据
getHost()
- 域。默认为 "localhost";getScheme()
- 协议。默认为 "http";hasSubDomain($level)
- 检查是否存在指定级别的子域。地址从右向左,从 "1" 开始。getSubDomain($level, $filter = null, $default = false)
- 获取子域的值或如果未设置则返回 $default。
不可变对象
如果需要基于基本地址生成新的链接而不更改基本对象,可以使用 URLImmutable
类 - 当调用更改地址的方法时,返回新的对象,保持原始对象不变。
URL 显示
URL 对象有两种输出地址的方式
asString($absolute = false)
- 返回带有相对或绝对地址的字符串;asTag($value = null, $attr = null, $target = null, $absolute = false)
- 生成 HTML 链接对象。 关于 SQRT\Tag 的更多信息