<?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('/[a-b]/', '', $name);
var_dump('0 '.$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));
preferences:
39.51 ms | 402 KiB | 5 Q