From e74c56757f1906df1ba15b20a90d9f35c3841f25 Mon Sep 17 00:00:00 2001 From: audrasjb Date: Sat, 5 Jul 2025 06:35:32 +0000 Subject: [PATCH] Media: Normalize all space characters to a space in `sanitize_file_name()`. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- wp-includes/formatting.php | 12 +++++++++++- wp-includes/version.php | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/wp-includes/formatting.php b/wp-includes/formatting.php index 744eefeb82..69a273eaf1 100644 --- a/wp-includes/formatting.php +++ b/wp-includes/formatting.php @@ -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 ); } /** diff --git a/wp-includes/version.php b/wp-includes/version.php index 637e17c621..b434479a54 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -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.