Chris@0: File Path Utility Chris@0: ================= Chris@0: Chris@0: [![Build Status](https://travis-ci.org/webmozart/path-util.svg?branch=2.3.0)](https://travis-ci.org/webmozart/path-util) Chris@0: [![Build status](https://ci.appveyor.com/api/projects/status/d5uuypr6p162gpxf/branch/master?svg=true)](https://ci.appveyor.com/project/webmozart/path-util/branch/master) Chris@0: [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/webmozart/path-util/badges/quality-score.png?b=2.3.0)](https://scrutinizer-ci.com/g/webmozart/path-util/?branch=2.3.0) Chris@0: [![Latest Stable Version](https://poser.pugx.org/webmozart/path-util/v/stable.svg)](https://packagist.org/packages/webmozart/path-util) Chris@0: [![Total Downloads](https://poser.pugx.org/webmozart/path-util/downloads.svg)](https://packagist.org/packages/webmozart/path-util) Chris@0: [![Dependency Status](https://www.versioneye.com/php/webmozart:path-util/2.3.0/badge.svg)](https://www.versioneye.com/php/webmozart:path-util/2.3.0) Chris@0: Chris@0: Latest release: [2.3.0](https://packagist.org/packages/webmozart/path-util#2.3.0) Chris@0: Chris@0: PHP >= 5.3.3 Chris@0: Chris@0: This package provides robust, cross-platform utility functions for normalizing, Chris@0: comparing and modifying file paths and URLs. Chris@0: Chris@0: Installation Chris@0: ------------ Chris@0: Chris@0: The utility can be installed with [Composer]: Chris@0: Chris@0: ``` Chris@0: $ composer require webmozart/path-util Chris@0: ``` Chris@0: Chris@0: Usage Chris@0: ----- Chris@0: Chris@0: Use the `Path` class to handle file paths: Chris@0: Chris@0: ```php Chris@0: use Webmozart\PathUtil\Path; Chris@0: Chris@0: echo Path::canonicalize('/var/www/vhost/webmozart/../config.ini'); Chris@0: // => /var/www/vhost/config.ini Chris@0: Chris@0: echo Path::canonicalize('C:\Programs\Webmozart\..\config.ini'); Chris@0: // => C:/Programs/config.ini Chris@0: Chris@0: echo Path::canonicalize('~/config.ini'); Chris@0: // => /home/webmozart/config.ini Chris@0: Chris@0: echo Path::makeAbsolute('config/config.yml', '/var/www/project'); Chris@0: // => /var/www/project/config/config.yml Chris@0: Chris@0: echo Path::makeRelative('/var/www/project/config/config.yml', '/var/www/project/uploads'); Chris@0: // => ../config/config.yml Chris@0: Chris@0: $paths = array( Chris@0: '/var/www/vhosts/project/httpdocs/config/config.yml', Chris@0: '/var/www/vhosts/project/httpdocs/images/banana.gif', Chris@0: '/var/www/vhosts/project/httpdocs/uploads/../images/nicer-banana.gif', Chris@0: ); Chris@0: Chris@0: Path::getLongestCommonBasePath($paths); Chris@0: // => /var/www/vhosts/project/httpdocs Chris@0: Chris@0: Path::getFilename('/views/index.html.twig'); Chris@0: // => index.html.twig Chris@0: Chris@0: Path::getFilenameWithoutExtension('/views/index.html.twig'); Chris@0: // => index.html Chris@0: Chris@0: Path::getFilenameWithoutExtension('/views/index.html.twig', 'html.twig'); Chris@0: Path::getFilenameWithoutExtension('/views/index.html.twig', '.html.twig'); Chris@0: // => index Chris@0: Chris@0: Path::getExtension('/views/index.html.twig'); Chris@0: // => twig Chris@0: Chris@0: Path::hasExtension('/views/index.html.twig'); Chris@0: // => true Chris@0: Chris@0: Path::hasExtension('/views/index.html.twig', 'twig'); Chris@0: // => true Chris@0: Chris@0: Path::hasExtension('/images/profile.jpg', array('jpg', 'png', 'gif')); Chris@0: // => true Chris@0: Chris@0: Path::changeExtension('/images/profile.jpeg', 'jpg'); Chris@0: // => /images/profile.jpg Chris@0: Chris@0: Path::join('phar://C:/Documents', 'projects/my-project.phar', 'composer.json'); Chris@0: // => phar://C:/Documents/projects/my-project.phar/composer.json Chris@0: Chris@0: Path::getHomeDirectory(); Chris@0: // => /home/webmozart Chris@0: ``` Chris@0: Chris@0: Use the `Url` class to handle URLs: Chris@0: Chris@0: ```php Chris@0: use Webmozart\PathUtil\Url; Chris@0: Chris@0: echo Url::makeRelative('http://example.com/css/style.css', 'http://example.com/puli'); Chris@0: // => ../css/style.css Chris@0: Chris@0: echo Url::makeRelative('http://cdn.example.com/css/style.css', 'http://example.com/puli'); Chris@0: // => http://cdn.example.com/css/style.css Chris@0: ``` Chris@0: Chris@0: Learn more in the [Documentation] and the [API Docs]. Chris@0: Chris@0: Authors Chris@0: ------- Chris@0: Chris@0: * [Bernhard Schussek] a.k.a. [@webmozart] Chris@0: * [The Community Contributors] Chris@0: Chris@0: Documentation Chris@0: ------------- Chris@0: Chris@0: Read the [Documentation] if you want to learn more about the contained functions. Chris@0: Chris@0: Contribute Chris@0: ---------- Chris@0: Chris@0: Contributions are always welcome! Chris@0: Chris@0: * Report any bugs or issues you find on the [issue tracker]. Chris@0: * You can grab the source code at the [Git repository]. Chris@0: Chris@0: Support Chris@0: ------- Chris@0: Chris@0: If you are having problems, send a mail to bschussek@gmail.com or shout out to Chris@0: [@webmozart] on Twitter. Chris@0: Chris@0: License Chris@0: ------- Chris@0: Chris@0: All contents of this package are licensed under the [MIT license]. Chris@0: Chris@0: [Bernhard Schussek]: http://webmozarts.com Chris@0: [The Community Contributors]: https://github.com/webmozart/path-util/graphs/contributors Chris@0: [Composer]: https://getcomposer.org Chris@0: [Documentation]: docs/usage.md Chris@0: [API Docs]: https://webmozart.github.io/path-util/api/latest/class-Webmozart.PathUtil.Path.html Chris@0: [issue tracker]: https://github.com/webmozart/path-util/issues Chris@0: [Git repository]: https://github.com/webmozart/path-util Chris@0: [@webmozart]: https://twitter.com/webmozart Chris@0: [MIT license]: LICENSE