3v4l.org

run code in 150+ php & hhvm versions
Bugs & Features
<?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); var_dump('1 - '.$name); $name = preg_replace('/[\x{0000}-\x{001F}]/u', '', $name); var_dump('2 - '.$name); $name = preg_replace('/[\x{0080}-\x{009F}]/u', '', $name); var_dump('3 - '.$name); $name = preg_replace('/[\x{E000}-\x{F8FF}]/u', '', $name); var_dump('4 - '.$name); $name = preg_replace('/[\x{FDD0}-\x{FDEF}]/u', '', $name); var_dump('5 - '.$name); $name = preg_replace('/[\x{FFF0}-\x{FFFF}]/u', '', $name); return $name; } $str = "blablabla ǹéñ~# - ".unicode2utf8(0xE001).' - '.unicode2utf8(0xFDD3).' - '.unicode2utf8(0xFD00); var_dump($str); var_dump(sanitizeFileName($str));
Output for 4.3.3 - 5.3.23, 5.4.0 - 5.4.13, 5.4.41 - 5.4.45, 5.5.10 - 5.6.28, hhvm-3.10.0 - 3.12.0, 7.0.0 - 7.1.0
string(36) "blablabla ǹéñ~# -  - ﷓ - ﴀ" string(40) "1 - blablabla ǹéñ~# -  - ﷓ - ﴀ" string(40) "2 - blablabla ǹéñ~# -  - ﷓ - ﴀ" string(40) "3 - blablabla ǹéñ~# -  - ﷓ - ﴀ" string(37) "4 - blablabla ǹéñ~# - - ﷓ - ﴀ" string(34) "5 - blablabla ǹéñ~# - - - ﴀ" string(30) "blablabla ǹéñ~# - - - ﴀ"
Output for 5.3.24 - 5.3.29, 5.4.14 - 5.4.40, 5.5.0 - 5.5.9
string(36) "blablabla ǹéñ~# -  - ﷓ - ﴀ" string(40) "1 - blablabla ǹéñ~# -  - ﷓ - ﴀ" string(4) "2 - " string(4) "3 - " string(4) "4 - " string(4) "5 - " string(0) ""
Output for 4.3.0 - 4.3.2
string(36) "blablabla ǹéñ~# -  - ﷓ - ﴀ" string(40) "1 - blablabla ǹéñ~# -  - ﷓ - ﴀ" string(40) "2 - blablabla ǹéñ~# -  - ﷓ - ﴀ" string(36) "3 - blablabla ǹéñ~# - � - � - �" Warning: Compilation failed: characters with values > 255 are not yet supported in classes at offset 8 in /in/LJm9c on line 32 string(4) "4 - " Warning: Compilation failed: characters with values > 255 are not yet supported in classes at offset 8 in /in/LJm9c on line 34 string(4) "5 - " Warning: Compilation failed: characters with values > 255 are not yet supported in classes at offset 8 in /in/LJm9c on line 36 NULL