Skip to content

Instantly share code, notes, and snippets.

@crewstyle
Last active April 20, 2016 08:30
Show Gist options
  • Save crewstyle/f91a187e0639b7c3f234309c71dac393 to your computer and use it in GitHub Desktop.
Save crewstyle/f91a187e0639b7c3f234309c71dac393 to your computer and use it in GitHub Desktop.
WordPress ~ Make medias works in all browsers (such as Safari) - #backend #optimisation
<?php
/**
* Sanitize filenames.
*
* This script has been made because of a bug on Safari which
* does not display medias if its name contains special character
* such as "é", "à" or a simple " ".
* This script transform all these specials to prevent this bug.
*
* @param string $filename Name of the file to sanitize
* @uses remove_accents() Converts all accent characters to ASCII characters
* @see https://github.com/crewstyle/clean-wordpress
*/
add_filter('sanitize_file_name', '_cw_sanitize_filename', 10);
function _cw_sanitize_filename($filename)
{
//Invalid characters
$invalid = array(
'À'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä€'=>'A', 'Ä‚'=>'A', 'Ȧ'=>'A', 'Ä'=>'A', 'Ả'=>'A', 'Ã…'=>'A', 'Ǎ'=>'A', 'È€'=>'A', 'È‚'=>'A', 'Ä„'=>'A', 'Ạ'=>'A', 'Ḁ'=>'A', 'Ầ'=>'A', 'Ấ'=>'A', 'Ẫ'=>'A', 'Ẩ'=>'A', 'Ằ'=>'A', 'Ắ'=>'A', 'Ẵ'=>'A', 'Ẳ'=>'A', 'Ç '=>'A', 'Çž'=>'A', 'Ǻ'=>'A', 'Ậ'=>'A', 'Ặ'=>'A',
'Æ'=>'AE', 'Ǽ'=>'AE', 'Ǣ'=>'AE',
'Ḃ'=>'B', 'Ɓ'=>'B', 'Ḅ'=>'B', 'Ḇ'=>'B', 'Ƃ'=>'B', 'Ƅ'=>'B', 'Þ'=>'B',
'Ĉ'=>'C', 'Ċ'=>'C', 'Č'=>'C', 'Ƈ'=>'C', 'Ç'=>'C', 'Ḉ'=>'C',
'Ḋ'=>'D', 'Ɗ'=>'D', 'Ḍ'=>'D', 'Ḏ'=>'D', 'Ḑ'=>'D', 'Ḓ'=>'D', 'Ď'=>'D',
'Đ'=>'Dj', 'Ɖ'=>'Dj',
'È'=>'E', 'É'=>'E', 'Ê'=>'E', 'Ẽ'=>'E', 'Ē'=>'E', 'Ĕ'=>'E', 'Ė'=>'E', 'Ë'=>'E', 'Ẻ'=>'E', 'Ě'=>'E', 'Ȅ'=>'E', 'Ȇ'=>'E', 'Ẹ'=>'E', 'Ȩ'=>'E', 'Ę'=>'E', 'Ḙ'=>'E', 'Ḛ'=>'E', 'Ề'=>'E', 'Ế'=>'E', 'Ễ'=>'E', 'Ể'=>'E', 'Ḕ'=>'E', 'Ḗ'=>'E', 'Ệ'=>'E', 'Ḝ'=>'E', 'Ǝ'=>'E', 'Ɛ'=>'E',
'Ḟ'=>'F', 'Ƒ'=>'F',
'Ç´'=>'G', 'Äœ'=>'G', 'Ḡ'=>'G', 'Äž'=>'G', 'Ä '=>'G', 'Ǧ'=>'G', 'Æ“'=>'G', 'Ä¢'=>'G', 'Ǥ'=>'G',
'Ĥ'=>'H', 'Ḧ'=>'H', 'Ȟ'=>'H', 'Ƕ'=>'H', 'Ḥ'=>'H', 'Ḩ'=>'H', 'Ḫ'=>'H', 'Ħ'=>'H',
'Ì'=>'I', 'Í'=>'I', 'Î'=>'I', 'Ĩ'=>'I', 'Ī'=>'I', 'Ĭ'=>'I', 'İ'=>'I', 'Ï'=>'I', 'Ỉ'=>'I', 'Ǐ'=>'I', 'Ị'=>'I', 'Į'=>'I', 'Ȉ'=>'I', 'Ȋ'=>'I', 'Ḭ'=>'I', 'Ɨ'=>'I', 'Ḯ'=>'I',
'IJ'=>'IJ',
'Ä´'=>'J',
'Ḱ'=>'K', 'Ǩ'=>'K', 'Ḵ'=>'K', 'Ƙ'=>'K', 'Ḳ'=>'K', 'Ķ'=>'K', 'Ĺ'=>'L', 'Ḻ'=>'L', 'Ḷ'=>'L', 'Ļ'=>'L', 'Ḽ'=>'L', 'Ľ'=>'L', 'Ŀ'=>'L', 'Ł'=>'L', 'Ḹ'=>'L',
'Ḿ'=>'M', 'á¹€'=>'M', 'Ṃ'=>'M', 'Æœ'=>'M', 'Ñ'=>'N', 'Ǹ'=>'N', 'Ń'=>'N', 'Ñ'=>'N', 'Ṅ'=>'N', 'Ň'=>'N', 'ÅŠ'=>'N', 'Ɲ'=>'N', 'Ṇ'=>'N', 'Å…'=>'N', 'Ṋ'=>'N', 'Ṉ'=>'N', 'È '=>'N',
'Ã’'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'Õ'=>'O', 'ÅŒ'=>'O', 'ÅŽ'=>'O', 'È®'=>'O', 'Ö'=>'O', 'Ỏ'=>'O', 'Ő'=>'O', 'Ç‘'=>'O', 'ÈŒ'=>'O', 'ÈŽ'=>'O', 'Æ '=>'O', 'Ǫ'=>'O', 'Ọ'=>'O', 'ÆŸ'=>'O', 'Ø'=>'O', 'á»’'=>'O', 'Ố'=>'O', 'á»–'=>'O', 'á»”'=>'O', 'È°'=>'O', 'Ȫ'=>'O', 'Ȭ'=>'O', 'Ṍ'=>'O', 'Ṑ'=>'O', 'á¹’'=>'O', 'Ờ'=>'O', 'Ớ'=>'O', 'á» '=>'O', 'Ở'=>'O', 'Ợ'=>'O', 'Ǭ'=>'O', 'Ộ'=>'O', 'Ǿ'=>'O', 'Ɔ'=>'O', 'Å’'=>'OE',
'Ṕ'=>'P', 'Ṗ'=>'P', 'Ƥ'=>'P',
'Ŕ'=>'R', 'Ṙ'=>'R', 'Ř'=>'R', 'Ȑ'=>'R', 'Ȓ'=>'R', 'Ṛ'=>'R', 'Ŗ'=>'R', 'Ṟ'=>'R', 'Ṝ'=>'R', 'Ʀ'=>'R',
'Ś'=>'S', 'Ŝ'=>'S', 'Ṡ'=>'S', 'Š'=>'S', 'Ṣ'=>'S', 'Ș'=>'S', 'Ş'=>'S', 'Ṥ'=>'S', 'Ṧ'=>'S', 'Ṩ'=>'S',
'Ṫ'=>'T', 'Ť'=>'T', 'Ƭ'=>'T', 'Ʈ'=>'T', 'Ṭ'=>'T', 'Ț'=>'T', 'Ţ'=>'T', 'Ṱ'=>'T', 'Ṯ'=>'T', 'Ŧ'=>'T',
'Ù'=>'U', 'Ú'=>'U', 'Û'=>'U', 'Ũ'=>'U', 'Ū'=>'U', 'Ŭ'=>'U', 'Ü'=>'U', 'Ủ'=>'U', 'Ů'=>'U', 'Ű'=>'U', 'Ǔ'=>'U', 'Ȕ'=>'U', 'Ȗ'=>'U', 'Ư'=>'U', 'Ụ'=>'U', 'Ṳ'=>'U', 'Ų'=>'U', 'Ṷ'=>'U', 'Ṵ'=>'U', 'Ṹ'=>'U', 'Ṻ'=>'U', 'Ǜ'=>'U', 'Ǘ'=>'U', 'Ǖ'=>'U', 'Ǚ'=>'U', 'Ừ'=>'U', 'Ứ'=>'U', 'Ữ'=>'U', 'Ử'=>'U', 'Ự'=>'U',
'Ṽ'=>'V', 'Ṿ'=>'V', 'Ʋ'=>'V',
'Ẁ'=>'W', 'Ẃ'=>'W', 'Ŵ'=>'W', 'Ẇ'=>'W', 'Ẅ'=>'W', 'Ẉ'=>'W',
'Ẋ'=>'X', 'Ẍ'=>'X',
'Ỳ'=>'Y', 'Ý'=>'Y', 'Ŷ'=>'Y', 'Ỹ'=>'Y', 'Ȳ'=>'Y', 'Ẏ'=>'Y', 'Ÿ'=>'Y', 'Ỷ'=>'Y', 'Ƴ'=>'Y', 'Ỵ'=>'Y',
'Ź'=>'Z', 'Ẑ'=>'Z', 'Ż'=>'Z', 'Ž'=>'Z', 'Ȥ'=>'Z', 'Ẓ'=>'Z', 'Ẕ'=>'Z', 'Ƶ'=>'Z',
'à '=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ā'=>'a', 'ă'=>'a', 'ȧ'=>'a', 'ä'=>'a', 'ả'=>'a', 'å'=>'a', 'ǎ'=>'a', 'ȁ'=>'a', 'ą'=>'a', 'ạ'=>'a', 'ḁ'=>'a', 'ẚ'=>'a', 'ầ'=>'a', 'ấ'=>'a', 'ẫ'=>'a', 'ẩ'=>'a', 'ằ'=>'a', 'ắ'=>'a', 'ẵ'=>'a', 'ẳ'=>'a', 'ǡ'=>'a', 'ǟ'=>'a', 'ǻ'=>'a', 'ậ'=>'a', 'ặ'=>'a',
'æ'=>'ae', 'ǽ'=>'ae', 'ǣ'=>'ae',
'ḃ'=>'b', 'ɓ'=>'b', 'ḅ'=>'b', 'ḇ'=>'b', 'ƀ'=>'b', 'ƃ'=>'b', 'ƅ'=>'b', 'þ'=>'b',
'ć'=>'c', 'ĉ'=>'c', 'ċ'=>'c', 'č'=>'c', 'ƈ'=>'c', 'ç'=>'c', 'ḉ'=>'c',
'ḋ'=>'d', 'ɗ'=>'d', 'ḍ'=>'d', 'ḏ'=>'d', 'ḑ'=>'d', 'ḓ'=>'d', 'ď'=>'d', 'đ'=>'d', 'ƌ'=>'d', 'ȡ'=>'d',
'Ä‘'=>'dj',
'è'=>'e', 'é'=>'e', 'ê'=>'e', 'ẽ'=>'e', 'ē'=>'e', 'ĕ'=>'e', 'ė'=>'e', 'ë'=>'e', 'ẻ'=>'e', 'ě'=>'e', 'ȅ'=>'e', 'ȇ'=>'e', 'ẹ'=>'e', 'ȩ'=>'e', 'ę'=>'e', 'ḙ'=>'e', 'ḛ'=>'e', 'ề'=>'e', 'ế'=>'e', 'ễ'=>'e', 'ể'=>'e', 'ḕ'=>'e', 'ḗ'=>'e', 'ệ'=>'e', 'ḝ'=>'e', 'ǝ'=>'e', 'ɛ'=>'e',
'ḟ'=>'f', 'ƒ'=>'f',
'ǵ'=>'g', 'ĝ'=>'g', 'ḡ'=>'g', 'ÄŸ'=>'g', 'Ä¡'=>'g', 'ǧ'=>'g', 'É '=>'g', 'Ä£'=>'g', 'Ç¥'=>'g',
'ĥ'=>'h', 'ḣ'=>'h', 'ḧ'=>'h', 'ȟ'=>'h', 'ƕ'=>'h', 'ḥ'=>'h', 'ḩ'=>'h', 'ḫ'=>'h', 'ẖ'=>'h', 'ħ'=>'h',
'ì'=>'i', 'í'=>'i', 'î'=>'i', 'ĩ'=>'i', 'ī'=>'i', 'ĭ'=>'i', 'ı'=>'i', 'ï'=>'i', 'ỉ'=>'i', 'ǐ'=>'i', 'ị'=>'i', 'į'=>'i', 'ȉ'=>'i', 'ȋ'=>'i', 'ḭ'=>'i', 'ɨ'=>'i', 'ḯ'=>'i',
'ij'=>'ij',
'ĵ'=>'j', 'ǰ'=>'j',
'ḱ'=>'k', 'ǩ'=>'k', 'ḵ'=>'k', 'ƙ'=>'k', 'ḳ'=>'k', 'ķ'=>'k',
'ĺ'=>'l', 'ḻ'=>'l', 'ḷ'=>'l', 'ļ'=>'l', 'ḽ'=>'l', 'ľ'=>'l', 'ŀ'=>'l', 'ł'=>'l', 'ƚ'=>'l', 'ḹ'=>'l', 'ȴ'=>'l',
'ḿ'=>'m', 'ṁ'=>'m', 'ṃ'=>'m', 'ɯ'=>'m',
'ǹ'=>'n', 'ń'=>'n', 'ñ'=>'n', 'ṅ'=>'n', 'ň'=>'n', 'ŋ'=>'n', 'ɲ'=>'n', 'ṇ'=>'n', 'ņ'=>'n', 'ṋ'=>'n', 'ṉ'=>'n', 'ʼn'=>'n', 'ƞ'=>'n', 'ȵ'=>'n',
'ò'=>'o', 'ó'=>'o', 'ô'=>'o', 'õ'=>'o', 'ō'=>'o', 'ŏ'=>'o', 'ȯ'=>'o', 'ö'=>'o', 'ỏ'=>'o', 'ő'=>'o', 'ǒ'=>'o', 'ȍ'=>'o', 'ȏ'=>'o', 'ơ'=>'o', 'ǫ'=>'o', 'ọ'=>'o', 'ɵ'=>'o', 'ø'=>'o', 'ồ'=>'o', 'ố'=>'o', 'ỗ'=>'o', 'ổ'=>'o', 'ȱ'=>'o', 'ȫ'=>'o', 'ȭ'=>'o', 'ṍ'=>'o', 'ṏ'=>'o', 'ṑ'=>'o', 'ṓ'=>'o', 'ờ'=>'o', 'ớ'=>'o', 'ỡ'=>'o', 'ở'=>'o', 'ợ'=>'o', 'ǭ'=>'o', 'ộ'=>'o', 'ǿ'=>'o', 'ɔ'=>'o',
'Å“'=>'oe',
'ṕ'=>'p', 'ṗ'=>'p', 'ƥ'=>'p',
'ŕ'=>'r', 'ṙ'=>'r', 'ř'=>'r', 'ȑ'=>'r', 'ȓ'=>'r', 'ṛ'=>'r', 'ŗ'=>'r', 'ṟ'=>'r', 'ṝ'=>'r',
'ś'=>'s', 'ŝ'=>'s', 'ṡ'=>'s', 'š'=>'s', 'ṣ'=>'s', 'ș'=>'s', 'ş'=>'s', 'ṥ'=>'s', 'ṧ'=>'s', 'ṩ'=>'s', 'ſ'=>'s', 'ẛ'=>'s',
'ß'=>'Ss',
'ṫ'=>'t', 'ẗ'=>'t', 'ť'=>'t', 'ƭ'=>'t', 'ʈ'=>'t', 'ƫ'=>'t', 'ṭ'=>'t', 'ț'=>'t', 'ţ'=>'t', 'ṱ'=>'t', 'ṯ'=>'t', 'ŧ'=>'t', 'ȶ'=>'t',
'ù'=>'u', 'ú'=>'u', 'û'=>'u', 'ũ'=>'u', 'ū'=>'u', 'ŭ'=>'u', 'ü'=>'u', 'ủ'=>'u', 'ů'=>'u', 'ű'=>'u', 'ǔ'=>'u', 'ȕ'=>'u', 'ȗ'=>'u', 'ư'=>'u', 'ụ'=>'u', 'ṳ'=>'u', 'ų'=>'u', 'ṷ'=>'u', 'ṵ'=>'u', 'ṹ'=>'u', 'ṻ'=>'u', 'ǜ'=>'u', 'ǘ'=>'u', 'ǖ'=>'u', 'ǚ'=>'u', 'ừ'=>'u', 'ứ'=>'u', 'ữ'=>'u', 'ử'=>'u', 'ự'=>'u',
'ṽ'=>'v', 'ṿ'=>'v',
'ẁ'=>'w', 'ẃ'=>'w', 'ŵ'=>'w', 'ẇ'=>'w', 'ẅ'=>'w', 'ẘ'=>'w', 'ẉ'=>'w',
'ẋ'=>'x', 'ẍ'=>'x',
'ý'=>'y', 'ý'=>'y', 'ỳ'=>'y', 'ý'=>'y', 'ŷ'=>'y', 'ȳ'=>'y', 'ẏ'=>'y', 'ÿ'=>'y', 'ÿ'=>'y', 'ỷ'=>'y', 'ẙ'=>'y', 'ƴ'=>'y', 'ỵ'=>'y',
'ź'=>'z', 'ẑ'=>'z', 'ż'=>'z', 'ž'=>'z', 'ȥ'=>'z', 'ẓ'=>'z', 'ẕ'=>'z', 'ƶ'=>'z',
'â„–'=>'No',
'º'=>'o',
'ª'=>'a',
'€'=>'E',
'©'=>'C',
'â„—'=>'P',
'â„¢'=>'tm',
'â„ '=>'sm'
);
//Make the magic
$sanitized_filename = str_replace(array_keys($invalid), array_values($invalid), $filename);
$sanitized_filename = remove_accents($sanitized_filename);
$sanitized_filename = preg_replace('/[^a-zA-Z0-9-_\.]/', '', strtolower($sanitized_filename));
//Return the new name
return $sanitized_filename;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment