3v4l.org

run code in 300+ PHP versions simultaneously
<?php function unicode2utf8($c){ $output=""; if($c < 0x80) { return chr($c); } else if($c < 0x800) { return chr( 0xc0 | ($c >> 6) ).chr( 0x80 | ($c & 0x3f) ); } else if($c < 0x10000) { return chr( 0xe0 | ($c >> 12) ).chr( 0x80 | (($c >> 6) & 0x3f) ).chr( 0x80 | ($c & 0x3f) ); } else if($c < 0x200000) { return chr(0xf0 | ($c >> 18)).chr(0x80 | (($c >> 12) & 0x3f)).chr(0x80 | (($c >> 6) & 0x3f)).chr(0x80 | ($c & 0x3f)); } return false; } function sanitizeFileName( $name ) { $invalidCharacters = array("\x2f", "\x22", "\x2a", "\x3a", "\x3c", "\x3e", "\x3f", "\x5c", "\x7f"); $name = str_replace($invalidCharacters, '', $name); $name = preg_replace('/[\x{0000}-\x{001F}]/', '', $name); var_dump('1 '.$name); $name = preg_replace('/[\x{0080}-\x{009F}]/', '', $name); var_dump('2 '.$name); $name = preg_replace('/[\x{E000}-\x{F8FF}]/', '', $name); var_dump('3 '.$name); $name = preg_replace('/[\x{FDD0}-\x{FDEF}]/', '', $name); var_dump('4 '.$name); $name = preg_replace('/[\x{FFF0}-\x{FFFF}]/', '', $name); var_dump('5 '.$name); return $name; } $str = "blablabla ǹéñ~#>< - ".unicode2utf8(0xE001).' - '.unicode2utf8(0xFDD3).' - '.unicode2utf8(0xFD00); var_dump($str); var_dump(sanitizeFileName($str));
Output for 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
string(38) "blablabla ǹéñ~#>< -  - ﷓ - ﴀ" string(38) "1 blablabla ǹéñ~# -  - ﷓ - ﴀ" string(34) "2 blablabla ǹéñ~# - � - � - �" Warning: preg_replace(): Compilation failed: character code point value in \x{} or \o{} is too large at offset 8 in /in/1l6D3 on line 32 string(2) "3 " Deprecated: preg_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in /in/1l6D3 on line 34 Warning: preg_replace(): Compilation failed: character code point value in \x{} or \o{} is too large at offset 8 in /in/1l6D3 on line 34 string(2) "4 " Deprecated: preg_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in /in/1l6D3 on line 36 Warning: preg_replace(): Compilation failed: character code point value in \x{} or \o{} is too large at offset 8 in /in/1l6D3 on line 36 string(2) "5 " NULL
Output for 8.0.0 - 8.0.30
string(38) "blablabla ǹéñ~#>< -  - ﷓ - ﴀ" string(38) "1 blablabla ǹéñ~# -  - ﷓ - ﴀ" string(34) "2 blablabla ǹéñ~# - � - � - �" Warning: preg_replace(): Compilation failed: character code point value in \x{} or \o{} is too large at offset 8 in /in/1l6D3 on line 32 string(2) "3 " Warning: preg_replace(): Compilation failed: character code point value in \x{} or \o{} is too large at offset 8 in /in/1l6D3 on line 34 string(2) "4 " Warning: preg_replace(): Compilation failed: character code point value in \x{} or \o{} is too large at offset 8 in /in/1l6D3 on line 36 string(2) "5 " NULL
Output for 7.3.0 - 7.3.33, 7.4.0 - 7.4.33
string(38) "blablabla ǹéñ~#>< -  - ﷓ - ﴀ" string(38) "1 blablabla ǹéñ~# -  - ﷓ - ﴀ" string(34) "2 blablabla ǹéñ~# - � - � - �" Warning: preg_replace(): Compilation failed: range out of order in character class at offset 11 in /in/1l6D3 on line 32 string(2) "3 " Warning: preg_replace(): Compilation failed: range out of order in character class at offset 11 in /in/1l6D3 on line 34 string(2) "4 " Warning: preg_replace(): Compilation failed: range out of order in character class at offset 11 in /in/1l6D3 on line 36 string(2) "5 " NULL
Output for 5.4.41 - 5.4.45, 5.5.10 - 5.5.37, 5.6.0 - 5.6.23, 7.0.0 - 7.0.20, 7.1.0 - 7.1.25, 7.2.0 - 7.2.33
string(38) "blablabla ǹéñ~#>< -  - ﷓ - ﴀ" string(38) "1 blablabla ǹéñ~# -  - ﷓ - ﴀ" string(34) "2 blablabla ǹéñ~# - � - � - �" Warning: preg_replace(): Compilation failed: character value in \x{} or \o{} is too large at offset 8 in /in/1l6D3 on line 32 string(2) "3 " Warning: preg_replace(): Compilation failed: character value in \x{} or \o{} is too large at offset 8 in /in/1l6D3 on line 34 string(2) "4 " Warning: preg_replace(): Compilation failed: character value in \x{} or \o{} is too large at offset 8 in /in/1l6D3 on line 36 string(2) "5 " NULL
Output for 4.4.3 - 4.4.9, 5.1.3 - 5.1.6, 5.2.0 - 5.2.17, 5.3.0 - 5.3.29, 5.4.0 - 5.4.40, 5.5.0 - 5.5.9
string(38) "blablabla ǹéñ~#>< -  - ﷓ - ﴀ" string(38) "1 blablabla ǹéñ~# -  - ﷓ - ﴀ" string(34) "2 blablabla ǹéñ~# - � - � - �" Warning: preg_replace(): Compilation failed: character value in \x{...} sequence is too large at offset 8 in /in/1l6D3 on line 32 string(2) "3 " Warning: preg_replace(): Compilation failed: character value in \x{...} sequence is too large at offset 8 in /in/1l6D3 on line 34 string(2) "4 " Warning: preg_replace(): Compilation failed: character value in \x{...} sequence is too large at offset 8 in /in/1l6D3 on line 36 string(2) "5 " NULL
Output for 4.3.11, 4.4.0 - 4.4.2, 5.0.0 - 5.0.5, 5.1.0 - 5.1.2
string(38) "blablabla ǹéñ~#>< -  - ﷓ - ﴀ" Warning: preg_replace(): Compilation failed: range out of order in character class at offset 11 in /in/1l6D3 on line 28 string(2) "1 " Warning: preg_replace(): Compilation failed: range out of order in character class at offset 11 in /in/1l6D3 on line 30 string(2) "2 " Warning: preg_replace(): Compilation failed: range out of order in character class at offset 11 in /in/1l6D3 on line 32 string(2) "3 " Warning: preg_replace(): Compilation failed: range out of order in character class at offset 11 in /in/1l6D3 on line 34 string(2) "4 " Warning: preg_replace(): Compilation failed: range out of order in character class at offset 11 in /in/1l6D3 on line 36 string(2) "5 " NULL
Output for 4.3.0 - 4.3.10
string(38) "blablabla ǹéñ~#>< -  - ﷓ - ﴀ" Warning: Compilation failed: range out of order in character class at offset 11 in /in/1l6D3 on line 28 string(2) "1 " Warning: Compilation failed: range out of order in character class at offset 11 in /in/1l6D3 on line 30 string(2) "2 " Warning: Compilation failed: range out of order in character class at offset 11 in /in/1l6D3 on line 32 string(2) "3 " Warning: Compilation failed: range out of order in character class at offset 11 in /in/1l6D3 on line 34 string(2) "4 " Warning: Compilation failed: range out of order in character class at offset 11 in /in/1l6D3 on line 36 string(2) "5 " NULL

preferences:
246.22 ms | 403 KiB | 364 Q