Tests if a given filesystem path is absolute.
Description
For example, ‘/foo/bar’, or ‘c:\windows’.
Parameters
$path
stringrequired- File path.
Source
function path_is_absolute( $path ) {
/*
* Check to see if the path is a stream and check to see if its an actual
* path or file as realpath() does not support stream wrappers.
*/
if ( wp_is_stream( $path ) && ( is_dir( $path ) || is_file( $path ) ) ) {
return true;
}
/*
* This is definitive if true but fails if $path does not exist or contains
* a symbolic link.
*/
if ( realpath( $path ) === $path ) {
return true;
}
if ( strlen( $path ) === 0 || '.' === $path[0] ) {
return false;
}
// Windows allows absolute paths like this.
if ( preg_match( '#^[a-zA-Z]:\\\\#', $path ) ) {
return true;
}
// A path starting with / or \ is absolute; anything else is relative.
return ( '/' === $path[0] || '\\' === $path[0] );
}
Changelog
Version | Description |
---|---|
2.5.0 | Introduced. |
This note was added while current WordPress version is 5.7
Please be aware that path_is_absolute() returns false on a Windows platform when used on a normalized (abs) path (trac #48289).
*nix Result:
bool(true)
bool(true)
Windows Result:
bool(true)
bool(false)