function transliteration_clean_filename in Transliteration 6.3
Same name and namespace in other branches
- 5.2 transliteration.inc \transliteration_clean_filename()
- 5 transliteration.inc \transliteration_clean_filename()
- 6 transliteration.inc \transliteration_clean_filename()
- 6.2 transliteration.inc \transliteration_clean_filename()
- 7.3 transliteration.module \transliteration_clean_filename()
Transliterate and sanitize a file name.
The resulting file name has white space replaced with underscores, consists of only US-ASCII characters, and is converted to lowercase (if configured). If multiple files have been submitted as an array, the names will be processed recursively.
Parameters
$filename: A file name, or an array of file names.
$source_langcode: Optional ISO 639 language code that denotes the language of the input and is used to apply language-specific variations. If the source language is not known at the time of transliteration, it is recommended to set this argument to the site default language to produce consistent results. Otherwise the current display language will be used.
Return value
Sanitized file name, or array of sanitized file names.
See also
3 calls to transliteration_clean_filename()
- transliteration_init in ./
transliteration.module - Implementation of hook_init().
- transliteration_retroactive in ./
transliteration.admin.inc - Form builder function; generate retroactive transliteration confirm form.
- transliteration_retroactive_submit in ./
transliteration.admin.inc - Form submit function; retroactively transliterate existing file names.
File
- ./
transliteration.module, line 99 - Converts non-latin text to US-ASCII and sanitizes file names.
Code
function transliteration_clean_filename($filename, $source_langcode = NULL) {
if (is_array($filename)) {
foreach ($filename as $key => $value) {
$filename[$key] = transliteration_clean_filename($value, $source_langcode);
}
return $filename;
}
$filename = transliteration_get($filename, '', $source_langcode);
// Replace whitespace.
$filename = str_replace(' ', '_', $filename);
// Remove remaining unsafe characters.
$filename = preg_replace('![^0-9A-Za-z_.-]!', '', $filename);
// Remove multiple consecutive non-alphabetical characters.
$filename = preg_replace('/(_)_+|(\\.)\\.+|(-)-+/', '\\1\\2\\3', $filename);
// Force lowercase to prevent issues on case-insensitive file systems.
if (variable_get('transliteration_file_lowercase', TRUE)) {
$filename = strtolower($filename);
}
return $filename;
}