Purl is a simple Object Oriented URL manipulation library for PHP 5.3+
Creating Url instances is easy:
<?php
$url = new \Purl\Url('http://jwage.com');
You can also create Url
instances through the static parse
method if you prefer that style:
<?php
$url = \Purl\Url::parse('http://jwage.com');
One benefit of using this method is you can chain methods together after creating the Url
:
<?php
$url = \Purl\Url::parse('http://jwage.com')
->set('schema', '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:passwordjwage.com:443/about/me?param1=value1¶m2=value2#about/me?param1=value1¶m2=value2
// $url->path becomes instanceof Purl\Path
// $url->query becomes insstanceof Purl\Query
// $url->fragment becomes instanceof Purl\Fragment
<?php
$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->path = 'about/me/another_segment'; // $url->path becomes instanceof Purl\Path
// get the path segments
print_r($url->path->getData()); // array('about', 'me', 'another_segment')
<?php
$url = new \Purl\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(array(
'param1' => 'value1',
'param2' => 'value2'
));
// set the query data from a string
$url->query = 'param1=value1¶m2=value2'; // $url->query becomes instanceof Purl\Query
print_r($url->query->getData()); //array('param1' => 'value1', 'param2' => 'value2')
<?php
$url = new \Purl\Url('http://jwage.com');
$url->fragment 'about/me?param1=value1¶m2=value2'; // $url->fragment becomes instanceof Purl\Fragment
A Fragment is made of a path and a query and comes after the hashmark (#).
<?php
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
Purl can parse a URL in to parts and its canonical form. It uses the list of domains from http://publicsuffix.org to break the domain into its suffix, domain, subdomain and canonical form.
<?php
$url = new \Purl\Url('http://about.jwage.com');
echo $url->suffix; // com
echo $url->domain; // jwage
echo $url->subdomain; // about
echo $url->canonical; // com.jwage.about/
You can easily extract urls from a string of text using the extract
method:
<?php
$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/