Changeset 60793 for trunk/src/wp-includes/compat-utf8.php
- Timestamp:
- 09/23/2025 03:34:20 AM (6 months ago)
- File:
-
- 1 edited
-
trunk/src/wp-includes/compat-utf8.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/compat-utf8.php
r60768 r60793 228 228 * Fallback mechanism for safely validating UTF-8 bytes. 229 229 * 230 * @see wp_is_valid_utf8()231 *232 230 * @since 6.9.0 233 231 * @access private 232 * 233 * @see wp_is_valid_utf6() 234 234 * 235 235 * @param string $bytes String which might contain text encoded as UTF-8. … … 249 249 return $bytes_length === $next_byte_at && 0 === $invalid_length; 250 250 } 251 252 /** 253 * Fallback mechanism for replacing invalid spans of UTF-8 bytes. 254 * 255 * Example: 256 * 257 * 'Pi�a' === _wp_scrub_utf8_fallback( "Pi\xF1a" ); // “ñ” is 0xF1 in Windows-1252. 258 * 259 * @since 6.9.0 260 * @access private 261 * 262 * @see wp_scrub_utf8() 263 * 264 * @param string $bytes UTF-8 encoded string which might contain spans of invalid bytes. 265 * @return string Input string with spans of invalid bytes swapped with the replacement character. 266 */ 267 function _wp_scrub_utf8_fallback( string $bytes ): string { 268 $bytes_length = strlen( $bytes ); 269 $next_byte_at = 0; 270 $was_at = 0; 271 $invalid_length = 0; 272 $scrubbed = ''; 273 274 while ( $next_byte_at <= $bytes_length ) { 275 _wp_scan_utf8( $bytes, $next_byte_at, $invalid_length ); 276 277 if ( $next_byte_at >= $bytes_length ) { 278 if ( 0 === $was_at ) { 279 return $bytes; 280 } 281 282 return $scrubbed . substr( $bytes, $was_at, $next_byte_at - $was_at - $invalid_length ); 283 } 284 285 $scrubbed .= substr( $bytes, $was_at, $next_byte_at - $was_at ); 286 $scrubbed .= "\u{FFFD}"; 287 288 $next_byte_at += $invalid_length; 289 $was_at = $next_byte_at; 290 } 291 292 return $scrubbed; 293 }
Note: See TracChangeset
for help on using the changeset viewer.