Popularity
6.1
Growing
Activity
8.5
-
1,000
16
67

Description

The Uri package provides simple and intuitive classes to create and manage URIs in PHP.

Programming language: PHP
License: MIT License
Tags: HTTP     URL     Data     Psr-7     Uri     Ftp     Data-uri     Ws     Rfc3986     Parse_url     Middleware     https     Rfc3987     File-uri     Hostname     Querystring     Query-string     Parse_str    
Latest version: v6.5.0

Uri alternatives and similar libraries

Based on the "URL" category.
Alternatively, view Uri alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of Uri or a related project?

Add another 'URL' Library

README

URI

Build [Software License](LICENSE) Latest Version Total Downloads

The Uri package provides simple and intuitive classes to manage URIs in PHP. You will be able to

  • parse, build and resolve URIs
  • create URIs from different sources (string, PHP environment, base URI, URI template, ...);
  • handle internalisation;
  • infer properties and features from URIs;
<?php

use League\Uri\UriTemplate;

$template = 'https://api.twitter.com:443/{version}/search/{term:1}/{term}/{?q*,limit}#title';
$defaultVariables = ['version' => '1.1'];
$params = [
    'term' => 'john',
    'q' => ['a', 'b'],
    'limit' => '10',
];

$uriTemplate = new UriTemplate($template, $defaultVariables);
$uri = $uriTemplate->expand($params);
// $uri is a League\Uri\Uri object

echo $uri->getScheme();    //displays "https"
echo $uri->getAuthority(); //displays "api.twitter.com:443"
echo $uri->getPath();      //displays "/1.1/search/j/john/"
echo $uri->getQuery();     //displays "q=a&q=b&limit=10"
echo $uri->getFragment();  //displays "title"
echo $uri;
//displays "https://api.twitter.com:443/1.1/search/j/john/?q=a&q=b&limit=10#title"
echo json_encode($uri);
//displays "https:\/\/api.twitter.com:443\/1.1\/search\/j\/john\/?q=a&q=b&limit=10#title"

Highlights

System Requirements

  • You require PHP >= 7.3 but the latest stable version of PHP is recommended
  • You will need the ext-intl to handle i18n URI.
  • Since version 6.2.0 you will need the ext-fileinfo to handle Data URI creation from a filepath.

Dependencies

In order to handle IDN host you are required to also install the intl extension otherwise an exception will be thrown when attempting to validate such host.

In order to create Data URI from a filepath, since version 6.2, you are required to also install the fileinfo extension otherwise an exception will be thrown.

Installation

$ composer require league/uri

Documentation

Full documentation can be found at uri.thephpleague.com.

Contributing

Contributions are welcome and will be fully credited. Please see [CONTRIBUTING](.github/CONTRIBUTING.md) and [CODE OF CONDUCT](.github/CODE_OF_CONDUCT.md) for details.

Testing

The library has a :

  • a PHPUnit test suite
  • a coding style compliance test suite using PHP CS Fixer.
  • a code analysis compliance test suite using PHPStan.

To run the tests, run the following command from the project folder.

$ composer test

Security

If you discover any security related issues, please email [email protected] instead of using the issue tracker.

Credits

Attribution

The UriTemplate class is adapted from the Guzzle 6 project.

License

The MIT License (MIT). Please see [License File](LICENSE) for more information.


*Note that all licence references and agreements mentioned in the Uri README section above are relevant to that project's source code only.