@ 2018-07-09T16:39:35Z <?php
function seems_utf8($str) {
$length = strlen($str);
for ($i = 0; $i < $length; $i++) {
$c = ord($str[$i]);
if ($c < 0x80) $n = 0;
elseif (($c & 0xE0) == 0xC0) $n = 1;
elseif (($c & 0xF0) == 0xE0) $n = 2;
elseif (($c & 0xF8) == 0xF0) $n = 3;
elseif (($c & 0xFC) == 0xF8) $n = 4;
elseif (($c & 0xFE) == 0xFC) $n = 5;
else return false;
for ($j=0; $j<$n; $j++) {
if ((++$i == $length) || ((ord($str[$i]) & 0xC0) != 0x80)) return false;
}
}
return true;
}
function remove_accents($string) {
if (!preg_match('/[\x80-\xff]/', $string)) return $string;
if (seems_utf8($string)) {
$chars = array(
// Decompositions for Latin-1 Supplement
chr(195).chr(128) => 'A', chr(195).chr(129) => 'A',
chr(195).chr(130) => 'A', chr(195).chr(131) => 'A',
chr(195).chr(132) => 'A', chr(195).chr(133) => 'A',
chr(195).chr(135) => 'C', chr(195).chr(136) => 'E',
chr(195).chr(137) => 'E', chr(195).chr(138) => 'E',
chr(195).chr(139) => 'E', chr(195).chr(140) => 'I',
chr(195).chr(141) => 'I', chr(195).chr(142) => 'I',
chr(195).chr(143) => 'I', chr(195).chr(145) => 'N',
chr(195).chr(146) => 'O', chr(195).chr(147) => 'O',
chr(195).chr(148) => 'O', chr(195).chr(149) => 'O',
chr(195).chr(150) => 'O', chr(195).chr(153) => 'U',
chr(195).chr(154) => 'U', chr(195).chr(155) => 'U',
chr(195).chr(156) => 'U', chr(195).chr(157) => 'Y',
chr(195).chr(159) => 's', chr(195).chr(160) => 'a',
chr(195).chr(161) => 'a', chr(195).chr(162) => 'a',
chr(195).chr(163) => 'a', chr(195).chr(164) => 'a',
chr(195).chr(165) => 'a', chr(195).chr(167) => 'c',
chr(195).chr(168) => 'e', chr(195).chr(169) => 'e',
chr(195).chr(170) => 'e', chr(195).chr(171) => 'e',
chr(195).chr(172) => 'i', chr(195).chr(173) => 'i',
chr(195).chr(174) => 'i', chr(195).chr(175) => 'i',
chr(195).chr(177) => 'n', chr(195).chr(178) => 'o',
chr(195).chr(179) => 'o', chr(195).chr(180) => 'o',
chr(195).chr(181) => 'o', chr(195).chr(182) => 'o',
chr(195).chr(182) => 'o', chr(195).chr(185) => 'u',
chr(195).chr(186) => 'u', chr(195).chr(187) => 'u',
chr(195).chr(188) => 'u', chr(195).chr(189) => 'y',
chr(195).chr(191) => 'y',
// Decompositions for Latin Extended-A
chr(196).chr(128) => 'A', chr(196).chr(129) => 'a',
chr(196).chr(130) => 'A', chr(196).chr(131) => 'a',
chr(196).chr(132) => 'A', chr(196).chr(133) => 'a',
chr(196).chr(134) => 'C', chr(196).chr(135) => 'c',
chr(196).chr(136) => 'C', chr(196).chr(137) => 'c',
chr(196).chr(138) => 'C', chr(196).chr(139) => 'c',
chr(196).chr(140) => 'C', chr(196).chr(141) => 'c',
chr(196).chr(142) => 'D', chr(196).chr(143) => 'd',
chr(196).chr(144) => 'D', chr(196).chr(145) => 'd',
chr(196).chr(146) => 'E', chr(196).chr(147) => 'e',
chr(196).chr(148) => 'E', chr(196).chr(149) => 'e',
chr(196).chr(150) => 'E', chr(196).chr(151) => 'e',
chr(196).chr(152) => 'E', chr(196).chr(153) => 'e',
chr(196).chr(154) => 'E', chr(196).chr(155) => 'e',
chr(196).chr(156) => 'G', chr(196).chr(157) => 'g',
chr(196).chr(158) => 'G', chr(196).chr(159) => 'g',
chr(196).chr(160) => 'G', chr(196).chr(161) => 'g',
chr(196).chr(162) => 'G', chr(196).chr(163) => 'g',
chr(196).chr(164) => 'H', chr(196).chr(165) => 'h',
chr(196).chr(166) => 'H', chr(196).chr(167) => 'h',
chr(196).chr(168) => 'I', chr(196).chr(169) => 'i',
chr(196).chr(170) => 'I', chr(196).chr(171) => 'i',
chr(196).chr(172) => 'I', chr(196).chr(173) => 'i',
chr(196).chr(174) => 'I', chr(196).chr(175) => 'i',
chr(196).chr(176) => 'I', chr(196).chr(177) => 'i',
chr(196).chr(178) => 'IJ',chr(196).chr(179) => 'ij',
chr(196).chr(180) => 'J', chr(196).chr(181) => 'j',
chr(196).chr(182) => 'K', chr(196).chr(183) => 'k',
chr(196).chr(184) => 'k', chr(196).chr(185) => 'L',
chr(196).chr(186) => 'l', chr(196).chr(187) => 'L',
chr(196).chr(188) => 'l', chr(196).chr(189) => 'L',
chr(196).chr(190) => 'l', chr(196).chr(191) => 'L',
chr(197).chr(128) => 'l', chr(197).chr(129) => 'L',
chr(197).chr(130) => 'l', chr(197).chr(131) => 'N',
chr(197).chr(132) => 'n', chr(197).chr(133) => 'N',
chr(197).chr(134) => 'n', chr(197).chr(135) => 'N',
chr(197).chr(136) => 'n', chr(197).chr(137) => 'N',
chr(197).chr(138) => 'n', chr(197).chr(139) => 'N',
chr(197).chr(140) => 'O', chr(197).chr(141) => 'o',
chr(197).chr(142) => 'O', chr(197).chr(143) => 'o',
chr(197).chr(144) => 'O', chr(197).chr(145) => 'o',
chr(197).chr(146) => 'OE',chr(197).chr(147) => 'oe',
chr(197).chr(148) => 'R',chr(197).chr(149) => 'r',
chr(197).chr(150) => 'R',chr(197).chr(151) => 'r',
chr(197).chr(152) => 'R',chr(197).chr(153) => 'r',
chr(197).chr(154) => 'S',chr(197).chr(155) => 's',
chr(197).chr(156) => 'S',chr(197).chr(157) => 's',
chr(197).chr(158) => 'S',chr(197).chr(159) => 's',
chr(197).chr(160) => 'S', chr(197).chr(161) => 's',
chr(197).chr(162) => 'T', chr(197).chr(163) => 't',
chr(197).chr(164) => 'T', chr(197).chr(165) => 't',
chr(197).chr(166) => 'T', chr(197).chr(167) => 't',
chr(197).chr(168) => 'U', chr(197).chr(169) => 'u',
chr(197).chr(170) => 'U', chr(197).chr(171) => 'u',
chr(197).chr(172) => 'U', chr(197).chr(173) => 'u',
chr(197).chr(174) => 'U', chr(197).chr(175) => 'u',
chr(197).chr(176) => 'U', chr(197).chr(177) => 'u',
chr(197).chr(178) => 'U', chr(197).chr(179) => 'u',
chr(197).chr(180) => 'W', chr(197).chr(181) => 'w',
chr(197).chr(182) => 'Y', chr(197).chr(183) => 'y',
chr(197).chr(184) => 'Y', chr(197).chr(185) => 'Z',
chr(197).chr(186) => 'z', chr(197).chr(187) => 'Z',
chr(197).chr(188) => 'z', chr(197).chr(189) => 'Z',
chr(197).chr(190) => 'z', chr(197).chr(191) => 's',
// Euro Sign
chr(226).chr(130).chr(172) => 'E',
// GBP (Pound) Sign
chr(194).chr(163) => '',
);
$string = strtr($string, $chars);
} else {
// Assume ISO-8859-1 if not UTF-8
$chars['in'] = chr(128).chr(131).chr(138).chr(142).chr(154).chr(158)
.chr(159).chr(162).chr(165).chr(181).chr(192).chr(193).chr(194)
.chr(195).chr(196).chr(197).chr(199).chr(200).chr(201).chr(202)
.chr(203).chr(204).chr(205).chr(206).chr(207).chr(209).chr(210)
.chr(211).chr(212).chr(213).chr(214).chr(216).chr(217).chr(218)
.chr(219).chr(220).chr(221).chr(224).chr(225).chr(226).chr(227)
.chr(228).chr(229).chr(231).chr(232).chr(233).chr(234).chr(235)
.chr(236).chr(237).chr(238).chr(239).chr(241).chr(242).chr(243)
.chr(244).chr(245).chr(246).chr(248).chr(249).chr(250).chr(251)
.chr(252).chr(253).chr(255);
$chars['out'] = "EfSZszYcYuAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy";
$string = strtr($string, $chars['in'], $chars['out']);
$double_chars['in'] = array(chr(140), chr(156), chr(198), chr(208), chr(222), chr(223), chr(230), chr(240), chr(254));
$double_chars['out'] = array('OE', 'oe', 'AE', 'DH', 'TH', 'ss', 'ae', 'dh', 'th');
$string = str_replace($double_chars['in'], $double_chars['out'], $string);
}
return $string;
}
var_dump( remove_accents("aťszgťščd") == "aťszgťščd" );
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).
Version System time (s) User time (s) Memory (MiB) 8.3.6 0.012 0.003 18.43 8.3.5 0.011 0.007 18.33 8.3.4 0.013 0.010 19.30 8.3.3 0.010 0.007 19.22 8.3.2 0.004 0.004 19.27 8.3.1 0.008 0.000 22.01 8.3.0 0.004 0.004 23.68 8.2.18 0.012 0.003 18.73 8.2.17 0.012 0.003 22.96 8.2.16 0.014 0.007 19.49 8.2.15 0.006 0.003 24.18 8.2.14 0.005 0.003 24.66 8.2.13 0.008 0.000 21.17 8.2.12 0.005 0.003 26.35 8.2.11 0.008 0.004 22.25 8.2.10 0.009 0.003 18.16 8.2.9 0.004 0.004 18.59 8.2.8 0.003 0.006 18.41 8.2.7 0.006 0.003 18.30 8.2.6 0.003 0.006 18.47 8.2.5 0.008 0.000 18.18 8.2.4 0.003 0.006 21.15 8.2.3 0.005 0.005 19.47 8.2.2 0.008 0.000 18.35 8.2.1 0.000 0.008 18.30 8.2.0 0.004 0.004 19.61 8.1.28 0.007 0.010 25.92 8.1.27 0.000 0.008 22.16 8.1.26 0.006 0.003 26.35 8.1.25 0.004 0.004 28.09 8.1.24 0.006 0.012 22.32 8.1.23 0.006 0.006 21.16 8.1.22 0.000 0.008 18.02 8.1.21 0.009 0.003 18.77 8.1.20 0.000 0.009 17.72 8.1.19 0.003 0.005 17.60 8.1.18 0.008 0.000 18.10 8.1.17 0.000 0.008 19.19 8.1.16 0.000 0.009 19.05 8.1.15 0.000 0.009 19.05 8.1.14 0.007 0.000 17.95 8.1.13 0.000 0.007 19.15 8.1.12 0.005 0.002 17.83 8.1.11 0.003 0.006 17.81 8.1.10 0.003 0.006 17.89 8.1.9 0.004 0.004 17.82 8.1.8 0.004 0.004 17.80 8.1.7 0.006 0.003 17.84 8.1.6 0.003 0.006 17.99 8.1.5 0.008 0.005 17.93 8.1.4 0.008 0.000 17.86 8.1.3 0.003 0.005 17.96 8.1.2 0.003 0.008 17.97 8.1.1 0.004 0.004 17.93 8.1.0 0.003 0.005 17.83 8.0.30 0.000 0.008 20.02 8.0.29 0.004 0.004 17.12 8.0.28 0.000 0.007 18.70 8.0.27 0.004 0.004 17.50 8.0.26 0.000 0.008 17.49 8.0.25 0.000 0.008 17.28 8.0.24 0.000 0.008 17.35 8.0.23 0.008 0.000 17.29 8.0.22 0.002 0.005 17.23 8.0.21 0.003 0.003 17.26 8.0.20 0.003 0.003 17.30 8.0.19 0.009 0.000 17.23 8.0.18 0.003 0.005 17.30 8.0.17 0.000 0.008 17.26 8.0.16 0.003 0.006 17.28 8.0.15 0.003 0.006 17.25 8.0.14 0.004 0.004 17.11 8.0.13 0.000 0.007 13.62 8.0.12 0.004 0.004 17.14 8.0.11 0.004 0.004 17.32 8.0.10 0.004 0.004 17.24 8.0.9 0.003 0.005 17.23 8.0.8 0.010 0.009 17.21 8.0.7 0.005 0.003 17.07 8.0.6 0.004 0.004 17.13 8.0.5 0.004 0.004 17.21 8.0.3 0.011 0.010 17.64 8.0.2 0.010 0.010 17.56 8.0.1 0.003 0.005 17.26 8.0.0 0.007 0.011 17.01 7.4.33 0.000 0.005 15.55 7.4.32 0.002 0.005 16.80 7.4.30 0.000 0.008 17.08 7.4.29 0.003 0.003 17.07 7.4.28 0.004 0.004 16.93 7.4.27 0.000 0.007 16.84 7.4.26 0.000 0.007 16.89 7.4.25 0.006 0.003 16.96 7.4.24 0.000 0.008 17.09 7.4.23 0.007 0.000 17.06 7.4.22 0.003 0.005 17.04 7.4.21 0.009 0.008 16.91 7.4.20 0.004 0.004 16.84 7.4.16 0.006 0.011 16.96 7.4.14 0.011 0.011 17.86 7.4.13 0.013 0.013 16.98 7.4.12 0.010 0.014 16.92 7.4.11 0.006 0.012 16.98 7.4.10 0.011 0.007 16.84 7.4.9 0.009 0.009 16.85 7.4.8 0.012 0.006 19.39 7.4.7 0.006 0.012 17.05 7.4.6 0.008 0.008 17.00 7.4.5 0.015 0.003 17.02 7.4.4 0.003 0.014 17.11 7.4.0 0.003 0.013 15.48 7.3.33 0.003 0.003 13.70 7.3.32 0.000 0.006 13.67 7.3.31 0.004 0.004 16.50 7.3.30 0.000 0.008 16.75 7.3.29 0.004 0.004 16.73 7.3.28 0.008 0.007 16.68 7.3.26 0.010 0.012 16.79 7.3.24 0.008 0.011 16.77 7.3.23 0.016 0.003 16.89 7.3.21 0.009 0.015 17.06 7.3.20 0.011 0.007 16.57 7.3.19 0.013 0.009 16.80 7.3.18 0.009 0.009 16.75 7.3.17 0.008 0.008 16.79 7.3.16 0.007 0.010 16.74 7.3.12 0.010 0.010 14.86 7.3.11 0.008 0.008 15.07 7.3.10 0.003 0.010 15.16 7.3.9 0.000 0.012 14.86 7.3.8 0.007 0.007 15.49 7.3.7 0.006 0.008 15.30 7.3.6 0.000 0.009 15.27 7.3.5 0.013 0.000 15.09 7.3.4 0.012 0.003 15.36 7.3.3 0.012 0.003 15.26 7.3.2 0.008 0.008 16.61 7.3.1 0.005 0.008 16.75 7.3.0 0.003 0.008 16.93 7.2.33 0.009 0.015 16.93 7.2.32 0.007 0.017 17.02 7.2.31 0.016 0.010 17.15 7.2.30 0.007 0.017 16.95 7.2.29 0.010 0.013 16.91 7.2.25 0.017 0.000 15.66 7.2.24 0.010 0.010 15.34 7.2.23 0.009 0.006 15.64 7.2.22 0.003 0.006 15.43 7.2.21 0.003 0.009 15.55 7.2.20 0.004 0.014 15.42 7.2.19 0.004 0.012 15.52 7.2.18 0.007 0.010 15.54 7.2.17 0.010 0.007 15.41 7.2.16 0.007 0.011 15.36 7.2.15 0.006 0.006 17.13 7.2.14 0.004 0.011 17.14 7.2.13 0.002 0.011 17.11 7.2.12 0.005 0.009 17.17 7.2.11 0.005 0.011 17.05 7.2.10 0.005 0.010 17.21 7.2.9 0.005 0.010 17.21 7.2.8 0.006 0.010 17.03 7.2.7 0.010 0.010 16.54 7.2.6 0.011 0.013 16.58 7.2.5 0.011 0.009 16.54 7.2.4 0.010 0.008 16.51 7.2.3 0.016 0.004 16.51 7.2.2 0.036 0.009 16.55 7.2.1 0.010 0.010 16.63 7.2.0 0.014 0.010 16.52 7.1.33 0.009 0.006 15.99 7.1.32 0.009 0.006 16.23 7.1.31 0.000 0.015 15.93 7.1.30 0.011 0.000 16.13 7.1.29 0.006 0.006 16.20 7.1.28 0.007 0.013 16.04 7.1.27 0.000 0.014 15.84 7.1.26 0.004 0.012 16.06 7.1.25 0.000 0.013 16.12 7.1.20 0.000 0.013 16.02 7.1.17 0.018 0.011 14.54 7.1.16 0.022 0.006 14.34 7.1.15 0.026 0.003 14.36 7.1.14 0.021 0.010 14.35 7.1.13 0.024 0.007 14.30 7.1.12 0.036 0.000 14.37 7.1.11 0.028 0.003 14.45 7.1.10 0.025 0.006 14.22 7.1.9 0.027 0.003 14.25 7.1.8 0.027 0.003 14.13 7.1.7 0.019 0.010 14.38 7.1.6 0.036 0.013 32.11 7.1.5 0.048 0.003 32.14 7.1.4 0.047 0.003 32.44 7.1.3 0.045 0.006 32.26 7.1.2 0.037 0.010 32.14 7.1.1 0.018 0.011 14.19 7.1.0 0.016 0.013 14.35
preferences:dark mode live preview
61.41 ms | 401 KiB | 5 Q