purl
v1.0.0
Purl 是一个简单的面向对象的 URL 操作库,适用于 PHP 7.2+
建议的安装方法是通过composer:
composer require jwage/purl
创建 URL 实例很容易。您可以指定所需的 URL,或仅使用当前 URL:
use Purl Url ;
$ url = new Url ( ' http://jwage.com ' );
$ currentUrl = Url:: fromCurrent ();
创建Url
后,您可以将方法链接在一起,如下所示:
$ url = ( new Url ( ' http://jwage.com ' ))
-> set ( ' scheme ' , ' https ' )
-> set ( ' port ' , ' 443 ' )
-> set ( ' user ' , ' jwage ' )
-> set ( ' pass ' , ' password ' )
-> set ( ' path ' , ' about/me ' )
-> set ( ' query ' , ' param1=value1¶m2=value2 ' )
-> set ( ' fragment ' , ' about/me?param1=value1¶m2=value2 ' );
echo $ url -> getUrl (); // https://jwage:[email protected]:443/about/me?param1=value1¶m2=value2#about/me?param1=value1¶m2=value2
// $url->path becomes instanceof PurlPath
// $url->query becomes instanceof PurlQuery
// $url->fragment becomes instanceof PurlFragment
$ url = new 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 -> path = ' about/me/another_segment ' ; // $url->path becomes instanceof PurlPath
// get the path segments
print_r ( $ url -> path -> getData ()); // array('about', 'me', 'another_segment')
$ url = new Url ( ' http://jwage.com ' );
$ url -> query -> set ( ' param1 ' , ' value1 ' );
$ url -> query -> set ( ' param2 ' , ' value2 ' );
echo $ url -> query ; // param1=value1¶m2=value2
echo $ url ; // http://jwage.com?param1=value1¶m2=value2
// set the query data from an array
$ url -> query -> setData ([
' param1 ' => ' value1 ' ,
' param2 ' => ' value2 '
]);
// set the query data from a string
$ url -> query = ' param1=value1¶m2=value2 ' ; // $url->query becomes instanceof PurlQuery
print_r ( $ url -> query -> getData ()); //array('param1' => 'value1', 'param2' => 'value2')
$ url = new Url ( ' http://jwage.com ' );
$ url -> fragment = ' about/me?param1=value1¶m2=value2 ' ; // $url->fragment becomes instanceof PurlFragment
片段由路径和查询组成,位于井号 (#) 后面。
echo $ url -> fragment -> path ; // about/me
echo $ url -> fragment -> query ; // param1=value1¶m2=value2
echo $ url ; // http://jwage.com#about/me?param1=value1¶m2=value2
您可以使用extract
方法轻松地从文本字符串中提取 url:
$ string = ' some text http://google.com http://jwage.com ' ;
$ urls = Url:: extract ( $ string );
echo $ urls [ 0 ]; // http://google.com/
echo $ urls [ 1 ]; // http://jwage.com/
您可以使用 Purl 轻松地将两个 URL 连接在一起:
$ url = new 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 Url ( ' http://jwage.com/about?param=value#fragment ' );
$ url2 = new Url ( ' http://about.me/jwage ' );
$ url1 -> join ( $ url2 );
echo $ url1 ; // http://about.me/jwage?param=value#fragment