Giter VIP home page Giter VIP logo

purl's Introduction

Purl

Purl is a simple Object Oriented URL manipulation library for PHP 5.3+

Build Status Scrutinizer Quality Score Code Coverage Latest Stable Version Total Downloads Dependency Status

Using Purl

Creating Url instances is easy:

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

You can also create Url instances through the static parse method if you prefer that style:

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

One benefit of using this method is you can chain methods together after creating the 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:[email protected]:443/about/me?param1=value1&param2=value2#about/me?param1=value1&param2=value2

// $url->path becomes instanceof Purl\Path
// $url->query becomes instanceof Purl\Query
// $url->fragment becomes instanceof Purl\Fragment

Path Manipulation

$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')

Query Manipulation

$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')

Fragment Manipulation

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

A Fragment is made of a path and a query and comes after the hashmark (#).

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

Domain Parts

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 public suffix, registerable domain, subdomain and canonical form.

$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/

Staying Up To Date

The list of domains used to parse a URL into its component parts is updated from time to time. To ensure that you have the latest copy of the public suffix list, you can refresh the local copy of the list by running ./vendor/bin/pdp-psl data

Extract URLs

You can easily extract urls from a string of text using the extract method:

$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/

Join URLs

You can easily join two URLs together using Purl:

$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

Or if you have another Url object already:

$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

purl's People

Contributors

jwage avatar jeremykendall avatar pborreli avatar paulredmond avatar seldaek avatar kbond avatar scrutinizer-auto-fixer avatar

Watchers

hunslater avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.