wp_normalize_path( string $path ): string

Normalizes a filesystem path.

Description

On windows systems, replaces backslashes with forward slashes and forces upper-case drive letters.
Allows for two leading slashes for Windows network shares, but ensures that all other duplicate slashes are reduced to a single.

Parameters

$pathstringrequired
Path to normalize.

Return

string Normalized path.

Source

function wp_normalize_path( $path ) {	$wrapper = '';	if ( wp_is_stream( $path ) ) {	list( $wrapper, $path ) = explode( '://', $path, 2 );	$wrapper .= '://';	}	// Standardize all paths to use '/'.	$path = str_replace( '\\', '/', $path );	// Replace multiple slashes down to a singular, allowing for network shares having two slashes.	$path = preg_replace( '|(?<=.)/+|', '/', $path );	// Windows paths should uppercase the drive letter.	if ( ':' === substr( $path, 1, 1 ) ) {	$path = ucfirst( $path );	}	return $wrapper . $path; } 

Changelog

VersionDescription
4.9.7Allows for PHP file wrappers.
4.5.0Allows for Windows network shares.
4.4.0Ensures upper-case drive letters on Windows systems.
3.9.0Introduced.

User Contributed Notes

  1. Skip to note 2 content

    Example

    A Simple example to normalize the theme include path

     $bS_incl_path = get_template_directory() . '/inc'; /** * Define theme include path * * Normalize the include path to be safe on windows hosts * @return string Normalized path * require min WordPress version 3.9 * @since boot_Strap 1.0.1 * */ if(function_exists('wp_normalize_path')){ $bS_incl_path = wp_normalize_path($bS_incl_path); } define('THM_INC', $bS_incl_path); require_once (THM_INC. '/wp_bootstrap_navwalker.php'); 

    print_r($bS_incl_path); shows

    Using this function:

    C:/xampp/htdocs/boot_strap/wp-content/themes/boot_Strap/inc

    Without this function:

    C:\xampp\htdocs\boot_strap/wp-content/themes/boot_Strap/inc

    On a Windows server.

You must log in before being able to contribute a note or feedback.