voku / purl

此软件包已被废弃,不再维护。作者建议使用 jwage/purl 软件包。

Purl 是一个简单的面向对象的 PHP 5.3+ URL 操作库 [Fork]

v3.0.1 2018-04-17 12:38 UTC

README

Build Status codecov.io Scrutinizer Code Quality Codacy Badge SensioLabsInsight Latest Stable Version Total Downloads Latest Unstable Version PHP 7 ready License

Purl

警告:这只是一个 "https://github.com/jwage/purl" 的 Fork

Purl 是一个简单的 PHP 面向对象的 URL 操作库。

安装

建议的安装方法是使用 composer

composer require voku/purl

使用 Purl

创建 Url 实例很容易

$url = new \Purl\Url('http://jwage.com');

如果您喜欢这种风格,也可以通过静态 parse 方法创建 Url 实例

$url = \Purl\Url::parse('http://jwage.com');

使用此方法的一个好处是在创建 Url 之后可以链式调用方法

$url = \Purl\Url::parse('http://jwage.com')
	->set('scheme', 'https')
	->set('port', '443')
	->set('user', 'jwage')
	->set('pass', 'password')
	->set('path', 'about/me')
	->set('query', 'param1=value1&param2=value2')
	->set('fragment', 'about/me?param1=value1&param2=value2');

echo $url->getUrl(); // https://jwage:password@jwage.com:443/about/me?param1=value1&param2=value2#about/me?param1=value1&param2=value2

// $url->path becomes instanceof Purl\Path
// ... but you can also use "$url->setPathString()", so you still have autocompletion in our IDE! 

// $url->query becomes instanceof Purl\Query
// ... but you can also use "$url->setQueryString()", so you still have autocompletion in our IDE! 

// $url->fragment becomes instanceof Purl\Fragment
// ... but you can also use "$url->setFragmentString()", so you still have autocompletion in our IDE! 

路径操作

$url = new \Purl\Url('http://jwage.com');

// add path segments one at a time
$url->path->add('about')->add('me');

// set the path data from a string
$url->setPathString('about/me/another_segment'); // $url->path becomes instanceof Purl\Path

// get the path segments
print_r($url->path->getData()); // array('about', 'me', 'another_segment')

查询操作

$url = new \Purl\Url('http://jwage.com');
$url->query->set('param1', 'value1');
$url->query->set('param2', 'value2');

echo $url->query; // param1=value1&param2=value2
echo $url; // http://jwage.com?param1=value1&param2=value2

// set the query data from an array
$url->query->setData(array(
	'param1' => 'value1',
	'param2' => 'value2'
));

// set the query data from a string
$url->query = 'param1=value1&param2=value2'; // $url->query becomes instanceof Purl\Query
print_r($url->query->getData()); //array('param1' => 'value1', 'param2' => 'value2')

片段操作

$url = new \Purl\Url('http://jwage.com');
$url->setFragmentString('about/me?param1=value1&param2=value2'); // $url->fragment becomes instanceof Purl\Fragment

片段由路径和查询组成,位于哈希标记 (#) 之后。

echo $url->fragment->path; // about/me
echo $url->fragment->query; // param1=value1&param2=value2
echo $url; // http://jwage.com#about/me?param1=value1&param2=value2

域名部分

Purl 可以将 URL 解析为部分和规范形式。它使用来自 http://publicsuffix.org 的域名列表将域名分解为其公共后缀、可注册域名、子域名和规范形式。

$url = new \Purl\Url('http://about.jwage.com');

echo $url->publicSuffix; // com
echo $url->registerableDomain; // jwage.com
echo $url->subdomain; // about
echo $url->canonical; // com.jwage.about/

保持最新

用于将 URL 解析为其组件部分的域名列表会不时更新。为了确保您拥有最新的公共后缀列表副本,您可以运行 ./vendor/bin/pdp-psl data 来刷新列表的本地副本。

提取 URL

您可以使用 extract 方法轻松地从文本字符串中提取 URL

$string = 'some text http://google.com http://jwage.com';
$urls = \Purl\Url::extract($string);

echo $urls[0]; // http://google.com/
echo $urls[1]; // http://jwage.com/

连接 URL

您可以使用 Purl 轻松地将两个 URL 连接起来

$url = new \Purl\Url('http://jwage.com/about?param=value#fragment');
$url->join('http://about.me/jwage');
echo $url; // http://about.me/jwage?param=value#fragment

或者如果您已经有了另一个 Url 对象

$url1 = new \Purl\Url('http://jwage.com/about?param=value#fragment');
$url2 = new \Purl\Url('http://about.me/jwage');
$url1->join($url2);
echo $url1; // http://about.me/jwage?param=value#fragment