PHP
<?php
function translite_my($string) {
-
// http://www.php.su/articles/?cat=phpdb&page=015
// "Безопасный и удобный поиск в mySQL" Автор: Дмитрий Лебедев - Источник: detail.phpclub.net
// $string = substr($string, 0, 64); // $ds['char']=64 символа пользователю будет достаточно для поиска.
// $string = preg_replace("/[^wx7F-xFFs]/", " ", $string); // Теперь каленым железом выжжем все "ненормальные" символы.
$string = ltrim($string); // Удаляет пробелы (или другие символы) из начала строки.
$string = rtrim($string); // Удаляет пробелы (или другие символы) из конца строки.
-
$rus = array(
"я", "ё", "й", "ю", "ч", "щ", "ц", "ш",
"Я", "Ё", "Й", "Ю", "Ч", "Щ", "Ц", "Ш", "Ж", "ж",
"Ь", "Ъ", "ь", "ъ",
"ї", "Ї", "є", "Є",
"у", "к", "е", "н", "г", "з", "х", "ф", "ы", "в", "а",
"п", "р", "о", "л", "д", "э", "с", "м", "и", "т", "б",
"У", "К", "Е", "Н", "Г", "З", "Х", "Ф", "Ы", "В", "А",
"П", "Р", "О", "Л", "Д", "Э", "С", "М", "И", "Т", "Б");
$eng = array(
"ya", "yo", "y", "yu", "ch", "shch", "ts", "sh",
"Ya", "Yo", "Y", "Yu", "Ch", "Shch", "Ts", "Sh", "Zh", "zh",
"", "", "", "", // "'","'", "'", "'",
"i", "Yi", "e", "E",
"u", "k", "e", "n", "g", "z", "h", "f", "y", "v", "a",
"p", "r", "o", "l", "d", "е", "s", "m", "i", "t", "b",
"U", "K", "E", "N", "G", "Z", "H", "F", "Y", "V", "A",
"P", "R", "O", "L", "D", "E", "S", "M", "I", "T", "B");
$string = str_replace($rus, $eng, $string);
-
-
$b1=array(",", " "); // ЗАПЯТАЯ, ТАБ, КОСАЯ ЧЕРТА
// ТОЧКА ЗАПЯТАЯ И ПР СИМВОЛЫ => , "."=> ""=>
$b2=array("", "_");
$string = str_replace($b1, $b2, $string);
-
$string = preg_replace('/ {2,}/', ' ', $string); // php: Удалить множественные пробелы// http://krylov.org.ua/?p=927
$string = str_replace(" ", "_", $string);
-
/***
функция str_replace находит значения в строке и заменяет их новой. здесь мы повторили весь алфавит, как видите ::):
***/
// if(!empty($string)) {
return $string;
// } // если строка не пуста, возвращаем строку
// else return("String empty/Строка пуста"); // а если пуста, орем во всю глотку xD
-
}
-
-
function a_z_filename($string) {
$string = strtolower($string);
$string =str_replace(".", "_", $string);
//if (preg_match('/[^A-Za-z0-9_-]/', $string)) {
//$string = translitIt($string);
// $string = preg_replace('/[^A-Za-z0-9_-]/', '', $string);
//}
$string = preg_replace('/[^a-z0-9_-]/', '_', $string);
$string = preg_replace('/_{2,}/', '_', $string); // ЗАМЕНЯЕТ ДВОЙНЫЕ ПОДЧЁРКИВАНИЯ НА ОДИНАРНЫЕ
$string = ltrim($string, "_"); // Удаляет пробелы (или другие символы) из начала строки.
$string = rtrim($string, "_"); // Удаляет пробелы (или другие символы) из конца строки.
return $string;
}
-
-
//echo "<br>translite(urlstr) == " . translite_my($urlstr0); // translite(urlstr) == odnako__tuta_vsyakaya_hren
//echo "<br> a_z_filename(translite(urlstr)) == " . a_z_filename(translite_my($urlstr0)); // a_z_filename(translite(urlstr)) == odnako_tuta_vsyakaya_hren
-
-
// $str = strtolower($str); // в нижний регистр
// $str = preg_replace('~[^-a-z0-9_]+~u', '-', $str); // заменям все ненужное нам на "-"
// $str = trim($str, "-"); // удаляем начальные и конечные '-'
-
-
-
-
-
$utf8sym = array( "Ў", "°", "Ѓ", "џ", "‡", "Ђ", "њ", "›", "Ћ", "ґ", "»", "°", "ќ", "ђ", "ў", "ћ", "Рє", "µ", "ѓ" , "°", "Ў", "Р°С", "Ѓ", "°", "џ", "‡Р", "Р№", "Ђ", "њ", "Р›С", "Ћ", "Рґ", "Рї", "Р»", "Р°Р", "Рќ", "Рђ", "Рў", "Рћ", "Рє", "Рµ", "Сѓ" );
-
function auto_charset($text, $auto='CP1251') {
global $utf8sym;
$charset="";
$i=0;
while ($i<count($utf8sym) ) {
if ( @strpos( "_".$text, $utf8sym[$i], 0 ) > 0 )
$charset = "utf-8";
$i++;
}
-
//if ($charset=='utf-8' AND $auto) $text=iconv('UTF-8', 'CP1251', $text);
if ($charset=='utf-8' AND $auto) $text=iconv('UTF-8', $auto, $text);
-
return $text;
-
}
-
-
-
-
-
//=======================================
function clean_filename($upl_name) {
$upl_name = auto_charset($upl_name, 'CP1251');
// $upl_name = $_FILES['Filedata']['name'];
$newname1 = translite_my($upl_name); // имя без пробелов но с точками
// $file_name = substr($upload['name'][$i], 0, strrpos($upload['name'][$i], "."));
// $file_ext = strrchr($upload['name'][$i],".");
-
// $file_name = substr($newname1, 0, strrpos($newname1, "."));
// если несколько точек не работает
-
$file_name = substr($newname1, 0, strripos($newname1, "."));
// $file_name = substr($file_name, 0, 64); // символа пользователю будет достаточно для поиска.
-
// http://www.php.su/functions/?strripos
// strripos -- Возвращает позицию последнего вхождения подстроки без учета регистра
// $haystack = 'ababcd'; $needle = 'aB'; $pos = strripos($haystack, $needle); Последнее (aB) найдено в (ababcd) в позиции (2)
-
// http://www.php.su/functions/?strrpos
// strrpos -- Возвращает позицию последнего вхождения символа
// int strrpos ( string haystack, string needle [, int offset] )
// необязательный аргумент offset позволяет указать, с какого по счету символа строки haystack начинать поиск. Отрицательное значение предписывает прекратить поиск при достижении определенной позиции до конца строки.
-
$file_ext = strrchr($newname1, "."); // Возвращает подстроку строки haystack начиная с последнего вхождения needle до конца строки. Если подстрока needle не найдена, возвращает FALSE.
-
-
//echo " <br> =file_name=" . $file_name;
// echo " <br> =file_ext=" . $file_ext;
$newname2 = substr(a_z_filename($file_name), 0, 64) . str_replace(".jpeg", ".jpg", strtolower($file_ext));
return $newname2;
}
//=======================================
-
-
// how to call
// вызывать так:
$new_filename = clean_filename($old_filename);
-
?>
|