zerig/url-parser

解析URL并与之交互的对象类。

v1.1.0 2020-05-05 16:26 UTC

This package is auto-updated.

Last update: 2024-09-06 01:47:30 UTC


README

解析URL并启用更多操作的对象。

$GLOBALS["server_root"] = new \UrlParser\Url("root");		// set root folder as ROOT
// BOTH variant are possile ↓
// during constructing URL obj, multiple slashes are transform to ONE
$url = new \UrlParser\Url(["http", "/www.web.cz/root", "/aaa/bbb", "a.html", "?member=me&age=15", "#hashtag"]);
$url = new \UrlParser\Url("http://www.web.cz/root/aaa/bbb//a.html?member=me&age=15#hashtag");

// special possibility for TEMPORARY files
$url = new \UrlParser\Url('C:\xampp\tmp\php8C07.tmp', '\\');


$url->getScheme("string")   => "http"
$url->getHost("string")     => "www.web.cz"
$url->getRoot("string")     => "root"
$url->getPath("string")     => "aaa/bbb/a.html"
$url->getQuery("string")    => "?member=me&age=15"
$url->getFragment("string") => "hashtag"

makeItString($url_path)

$url_path [string || array of string]
正确格式化URL。您可以使用STRING或ARRAYofSTRINGS创建URL。此方法还会删除双斜杠。

makeItString("http://www.web.cz//aaa/bbb/a.html")
makeItString(["http", "/www.web.cz/root", "/aaa/bbb", "a.html"])

getString() => "http://www.web.cz/root/aaa/bbb/a.html"

pop($times)

  • $times [int] 几次
  • @return [string / array of string] 被弹出

移除URL路径的最后部分。不仅仅是打印,而是删除!!!\n

$url = new \UrlParser\Url("http://www.web.cz//aaa/bbb/a.html");
$url->getString() => "http://www.web.cz/root/aaa/bbb/a.html"

$popped = $url->pop();
$url->getString() => "http://www.web.cz/root/aaa/bbb"
$popped => "a.html"

$popped = $url->pop(3);
$url->getString() => "http://www.web.cz"
$popped => [
	[0] => "bbb",
	[1] => "aaa"
]

shift($times)

$times [int] 几次
移除URL路径的第一部分。不仅仅是打印,而是删除!!!

$url = new \UrlParser\Url("http://www.web.cz/root/aaa/bbb/a.html");
$url->getString() => "http://www.web.cz/root/aaa/bbb/a.html"

$shifted = $url->shift();
$url->getString() => "http://www.web.cz/bbb/a.html"
$shifted => "aaa"

$shifted = $url->shift(3);
$url->getString() => "http://www.web.cz"
$shifted => [
	[0] => "bbb",
	[1] => "a.html"
]

swap($from, $to)

$from [string] 要更改的URL路径部分
$to [string] 更改为这个
将URL路径的一部分更改为新的。

$url = new \UrlParser\Url("http://www.web.cz/root/aaa/bbb/a.html");
$url->getString() => "http://www.web.cz/root/aaa/bbb/a.html"

$url->swap("aaa", "ccc");
$url->getString() => "http://www.web.cz/ccc/bbb/a.html"

get....($exp)

$exp [string] 我们希望导出的形式

  1. getScheme() - 变量如何保存 [string | array of string | key array]
  2. getScheme("string") - 如何在URL中书写
  3. getScheme("array") - 在数组中 [array of string | key array]
"http://web.cz/aaa/bbb/c.html"
  • getScheme() - 获取协议部分: "http"
  • getHost() - 获取主机部分: "web.cz"
  • getRoot() - 获取根部分: ["aaa"]
  • getPath() - 获取路径部分: ["bbb", "a.html"]
  • getQuery() - 获取查询部分: ["member" => "me", "age" => "15"]
  • getFragment() - 获取哈希部分: "hashtag"
$url = new \UrlParser\Url("http://www.web.cz/root/aaa/bbb/a.html");
$url->getString() => "http://www.web.cz/root/aaa/bbb/a.html"
$url->getHost() => "www.web.cz"
$url->getHost("string") => "www.web.cz"
$url->getHost("array") => [
	[0] => "www.web.cz"
]
$url->getPath() => [
	[0] => "ccc",
	[1] => "bbb",
	[2] => "a.html"
]
$url->getPath("string") => "ccc/bbb/a.html"
$url->getPath("array") => [
	[0] => "ccc",
	[1] => "bbb",
	[2] => "a.html"
]

getString()

以字符串格式获取整个URL。

$url = new \UrlParser\Url("http://www.web.cz/root/aaa/bbb/a.html");
$url->addPath("file");			// add PATH URL
$url->addQuery(["name" => "jerome"]);	// add Query in URL

$url->getString() => "http://www.web.cz/root/aaa/bbb/a/file.html?name=jerome"

getDepth()

返回从根目录到所有文件夹的总数

$url = new \UrlParser\Url("http://www.web.cz/root/aaa/bbb/a.html");
$url->getDepth() => 2

$url = new \UrlParser\Url("http://www.web.cz/root/aaa/bbb/a");
$url->getDepth() => 3

linkRoot()

返回路径,该路径将此URL返回到根目录

$url = new \UrlParser\Url("http://www.web.cz/root/aaa/bbb/a.html");
$url->linkRoot() => "../../"

$url = new \UrlParser\Url("http://www.web.cz/root/aaa/bbb/a");
$url->linkRoot() => "../../../"

addPath($add_part)

$add_part [string | array of strings] 添加到根部分。

$url = new \UrlParser\Url("http://www.web.cz/root/aaa/bbb/a.html");
$url->addPath(["ccc", "ddd"]);
$url->getPath("string") => "aaa/bbb/a/ccc/ddd.html"
$url->getString() => "http://www.web.cz/root/aaa/bbb/a/ccc/ddd.html"

$url = new \UrlParser\Url("http://www.web.cz/root/aaa/bbb/a");
$url->addPath(["ccc", "ddd"]);
$url->getPath("string") => "aaa/bbb/a/ccc/ddd"
$url->getString() => "http://www.web.cz/root/aaa/bbb/a/ccc/ddd"

beforePath($add_part)

$add_part [string | array of strings] 添加到根部分。

$url = new \UrlParser\Url("http://www.web.cz/root/aaa/bbb/a.html");
$url->beforePath(["ccc", "ddd"]);

$url->getPath("string") => "ccc/ddd/aaa/bbb/a.html"
$url->getString() => "http://www.web.cz/root/ccc/ddd/aaa/bbb/a.html"

addQuery($add_part)

$add_part [key array] 添加到根部分。

$url = new \UrlParser\Url("http://www.web.cz/root/aaa/bbb/a.html");
$url->addQuery(["name" => "jerome", "age=15"]);

$url->getQuery("string") => "?name=jerome&age=15"
$url->getString() => "http://www.web.cz/root/aaa/bbb/a.html?name=jerome&age=15"

$url = new \UrlParser\Url("http://www.web.cz/root/aaa/bbb/a.html?member=me");
$url->addQuery(["name" => "jerome", "age=15"]);

$url->getQuery("string") => "?member=me&name=jerome&age=15"
$url->getString() => "http://www.web.cz/root/aaa/bbb/a.html?member=me&name=jerome&age=15"

hasExtension()

如果URL以文件结尾: ".../a.html",则返回1
如果URL以文件夹结尾: ".../a",则返回0

$url = new \UrlParser\Url("http://www.web.cz/root/aaa/bbb/a.html");
$url->hasExtension() => 1

$url = new \UrlParser\Url("http://www.web.cz/root/aaa/bbb/a");
$url->hasExtension() => 0

getExtension()

获取URL的扩展名

$url = new \UrlParser\Url("http://www.web.cz/root/aaa/bbb/a.html");
$url->getExtension() => "html"

removeExtension()

如果URL有扩展名 => ".html",则从路径中删除它

$url = new \UrlParser\Url("http://www.web.cz/root/aaa/bbb/a.html");
$extension = $url->removeExtension();

$url->getString() => "http://www.web.cz/root/aaa/bbb/a"
$extension => "html"

exist()

检查URL是否存在作为文件/文件夹

$url = new \UrlParser\Url("http://www.web.cz/root/aaa/bbb/a.html");
$url->exist() => 1

isFolder()

检查URL是否存在作为文件夹

$url = new \UrlParser\Url("http://www.web.cz/root/aaa/bbb/a.html");
$url->isFolder() => 0

isFile()

检查URL是否存在作为文件

$url = new \UrlParser\Url("http://www.web.cz/root/aaa/bbb/a.html");
$url->isFile() => 1

remove...

$add_part [key array] 添加到根部分。

  • removeScheme() - 删除协议部分: "http"
  • removeHost() - 删除主机部分: "web.cz"
  • removeRoot() - 删除根部分: ["aaa"]
  • removePath() - 删除路径部分: ["bbb", "a.html"]
  • removeQuery() - 删除查询部分: ["member" => "me", "age" => "15"]
  • removeFragment() - 删除哈希部分: "hashtag"
$url = new \UrlParser\Url("http://www.web.cz/root/aaa/bbb/a.html?member=me&age=15");
$remove_part = $url->removeScheme();

$url->getString() => "www.web.cz/root/aaa/bbb/a.html"
$remove_part => "http"

removePath($path_part)

$url = new \UrlParser\Url("http://www.web.cz/root/aaa/bbb/a.html");
$remove_part = $url->removePath(["aaa", "bbb"]);

$url->getString() => "www.web.cz/root/a.html"
$remove_part = [
	[0] => "aaa",
	[1] => "bbb"
]

removeQuery($key_array)

$url = new \UrlParser\Url("http://www.web.cz/root/aaa/bbb/a.html?member=me&age=15");
$remove_part = $url->removeQuery(["member"]);

$url->getString() => "www.web.cz/root/aaa/bbb/a.html?age=15"
$remove_part = [
	["member"] => "me"
]