timostamm / url-builder
An URL object to parse, manipulate or create URLs with a fluent interface
Installs: 1 286
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 3
Forks: 1
Open Issues: 0
Requires
- php: >=5.6
- timostamm/pathinfo: ^1.0.1
Requires (Dev)
- phpunit/phpunit: ^9.3
This package is auto-updated.
Last update: 2024-12-28 18:12:58 UTC
README
An URL object to parse, manipulate or create URLs with a fluent interface.
Takes care of proper decoding / encoding of the path, query parameters and credentials.
The object exposes all components of common Web URLs as public properties:
$url = new Url('https://peter%40example.com:pass@domain.tld:8080/all+products/search?query=all#fragment'); $url->scheme->get(); // -> "https" $url->host->get(); // -> "domain.tld" $url->port->get(); // -> 8080 $url->credentials->username; // peter@example.com $url->credentials->password; $url->path->get(); // "all products/search" $url->path->filename(); // "search" $url->query->get('query'); // "all" $url->fragment->get(); // "fragment" $url->getUrl();
URL manipulation:
$url->clearHost(); // remove the scheme, host, port, credentials $url->clearPath(); // remove the path, query, fragment $url->clear(Url::QUERY | Url::FRAGMENT); // remove only specific components // replace components with components from another URL $url->replace('http://example.com/index.html', Url::SCHEME); $url->replacePath('http://example.com/index.html'); $url = new Url('../styles/main.css'); $url->makeAbsolutePath('http://domain.tld/products/search'); // -> /styles/main.css $url->makeAbsolute('http://domain.tld/products/search'); // -> http://domain.tld/styles/main.css
Path manipulation:
$url->path->set('automatically encöded/') $url->path->normalize(); // resolves /foo/../bar to /bar $url->filename(); // returns just the filename
Query manipulation:
$url->query->set('text', 'encöded'); $url->query->has('text'); $url->query->replace([ 'a' => 'foo', 'b' => 'bar' ]); foreach( $url->query as list($key, $values) ) { print $key . ": " . join(', ', $values) . "\n"; }
Credentials manipulation:
$url->credentials->username = 'peter@example.com'; $url->credentials->password = 'pass; $url->credentials->clear(); // removes username and password if present $url->crdentials->isEmpty(); // Checks whether a username and/or password is present. $url->crdentials->equals($otherUrl->credentials); // True if both are empty or both are same.
Comparing URLs or individual components:
$url->equals($otherUrl); $url->equals('/all+products/search', Url::PATH); $url->scheme->equals($otherUrl->scheme);
Common methods of all components:
->isEmpty(); // is the component present? ->clear(); // makes the component empty ->equals($otherurl->component);