webmozart / path-util
A robust cross-platform utility for normalizing, comparing and modifying file paths.
Installs: 78 238 985
Dependents: 321
Suggesters: 0
Security: 0
Stars: 446
Watchers: 8
Forks: 24
Open Issues: 12
Requires
- php: >=5.3.3
- webmozart/assert: ~1.0
Requires (Dev)
- phpunit/phpunit: ^4.6
- sebastian/version: ^1.0.1
README
Latest release: 2.3.0
PHP >= 5.3.3
This package provides robust, cross-platform utility functions for normalizing, comparing and modifying file paths and URLs.
Deprecation
This package has been merged into the Symfony Filesystem Component 5.4. It is not maintained anymore.
Installation
The utility can be installed with Composer:
$ composer require webmozart/path-util
Usage
Use the Path
class to handle file paths:
use Webmozart\PathUtil\Path; echo Path::canonicalize('/var/www/vhost/webmozart/../config.ini'); // => /var/www/vhost/config.ini echo Path::canonicalize('C:\Programs\Webmozart\..\config.ini'); // => C:/Programs/config.ini echo Path::canonicalize('~/config.ini'); // => /home/webmozart/config.ini echo Path::makeAbsolute('config/config.yml', '/var/www/project'); // => /var/www/project/config/config.yml echo Path::makeRelative('/var/www/project/config/config.yml', '/var/www/project/uploads'); // => ../config/config.yml $paths = array( '/var/www/vhosts/project/httpdocs/config/config.yml', '/var/www/vhosts/project/httpdocs/images/banana.gif', '/var/www/vhosts/project/httpdocs/uploads/../images/nicer-banana.gif', ); Path::getLongestCommonBasePath($paths); // => /var/www/vhosts/project/httpdocs Path::getFilename('/views/index.html.twig'); // => index.html.twig Path::getFilenameWithoutExtension('/views/index.html.twig'); // => index.html Path::getFilenameWithoutExtension('/views/index.html.twig', 'html.twig'); Path::getFilenameWithoutExtension('/views/index.html.twig', '.html.twig'); // => index Path::getExtension('/views/index.html.twig'); // => twig Path::hasExtension('/views/index.html.twig'); // => true Path::hasExtension('/views/index.html.twig', 'twig'); // => true Path::hasExtension('/images/profile.jpg', array('jpg', 'png', 'gif')); // => true Path::changeExtension('/images/profile.jpeg', 'jpg'); // => /images/profile.jpg Path::join('phar://C:/Documents', 'projects/my-project.phar', 'composer.json'); // => phar://C:/Documents/projects/my-project.phar/composer.json Path::getHomeDirectory(); // => /home/webmozart
Use the Url
class to handle URLs:
use Webmozart\PathUtil\Url; echo Url::makeRelative('http://example.com/css/style.css', 'http://example.com/puli'); // => ../css/style.css echo Url::makeRelative('http://cdn.example.com/css/style.css', 'http://example.com/puli'); // => http://cdn.example.com/css/style.css
Learn more in the Documentation and the API Docs.
Authors
Documentation
Read the Documentation if you want to learn more about the contained functions.
Contribute
Contributions are always welcome!
- Report any bugs or issues you find on the issue tracker.
- You can grab the source code at the Git repository.
Support
If you are having problems, send a mail to bschussek@gmail.com or shout out to @webmozart on Twitter.
License
All contents of this package are licensed under the MIT license.