Media: Normalize all space characters to a space in sanitize_file_name().

The `sanitize_file_name()` function normalizes the no-break space to a normal space (`U+0020`) in order to prevent issues saving files with the no-break space in it.

This patch expands the replacement to all space characters, since it’s known that macOS stores a `NARROW NO-BREAK SPACE` (`U+202F`) in screenshot filenames between the time and the am/pm indicator.

There are deeper issues with the way this function works, but this patch resolves a known and common problem without raising any of the deeper refactoring questions.

Reviewed by audrasjb, youknowriad.
Merges [60399] to the 6.8 branch.
Props audrasjb, desrosj, dmsnell, jonsurrell, matt, room34, siliconforks, zieladam, annezazu.
Fixes #62995.


Built from https://develop.svn.wordpress.org/branches/6.8@60411


git-svn-id: http://core.svn.wordpress.org/branches/6.8@59747 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
audrasjb
2025-07-05 06:35:32 +00:00
parent ea3f5c6084
commit e74c56757f
2 changed files with 12 additions and 2 deletions

View File

@@ -2035,7 +2035,17 @@ function sanitize_file_name( $filename ) {
}
if ( $utf8_pcre ) {
$filename = preg_replace( "#\x{00a0}#siu", ' ', $filename );
/**
* Replace all whitespace characters with a basic space (U+0020).
*
* The “Zs” in the pattern selects characters in the `Space_Separator`
* category, which is what Unicode considers space characters.
*
* @see https://www.unicode.org/reports/tr44/#General_Category_Values
* @see https://www.unicode.org/versions/Unicode16.0.0/core-spec/chapter-6/#G17548
* @see https://www.php.net/manual/en/regexp.reference.unicode.php
*/
$filename = preg_replace( '#\p{Zs}#siu', ' ', $filename );
}
/**

View File

@@ -16,7 +16,7 @@
*
* @global string $wp_version
*/
$wp_version = '6.8.2-alpha-60410';
$wp_version = '6.8.2-alpha-60411';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.