есть вот такой скрипт для ЧПУ, но его проблем в том что он в строке URL прописывает заглавные буквы (если они присутствуют в названии поста) не могу никак сделать чтобы все было только прописными, перед return $name; если вставить mb_strtolower - ничего не меняется(( function vam_cleanName($name) { // $replace_param='/[^a-zA-Z0-9]/'; $replace_param='/[^a-zA-Zа-яА-Я0-9]/'; $cyrillic = array("ж", "ё", "й","ю", "ь","ч", "щ", "ц","у","к","е","н","г","ш", "з","х","ъ","ф","ы","в","а","п","р","о","л","д","э","я","с","м","и","т","б","Ё","Й","Ю","Ч","Ь","Щ","Ц","У","К","Е","Н","Г","Ш","З","Х","Ъ","Ф","Ы","В","А","П","Р","О","Л","Д","Ж","Э","Я","С","М","И","Т","Б"); $translit = array("zh","yo","i","yu","","ch","sh","c","u","k","e","n","g","sh","z","h","", "f", "y", "v", "a", "p", "r", "o", "l", "d", "ye", "ya", "s", "m", "i", "t", "b", "yo", "I", "YU", "CH", "", "SH", "C", "U", "K", "E", "N", "G", "SH", "Z", "H", "", "F", "Y", "V", "A", "P", "R", "O", "L", "D", "Zh", "Ye", "Ya", "S", "M", "I", "T", "B"); $name = str_replace($cyrillic, $translit, $name); $name=preg_replace($replace_param,'-',$name); $name = urlencode($name); return $name; }
кодировку указать попробуйте, натравите strtolower() на латинский текст и самый тупой вариант: в списке замены все заглавные буквы замените на прописные
пробовал изменить заглавные на прописные в списке, не помогает, даже не пойму почему указать кодировку как именно?
Не пойму, почему так не работает???? function vam_cleanName($name) { // $replace_param='/[^a-zA-Z0-9]/'; $replace_param='/[^a-zA-Zа-яА-Я0-9]/'; $cyrillic = array("ж", "ё", "й","ю", "ь","ч", "щ", "ц","у","к","е","н","г","ш", "з","х","ъ","ф","ы","в","а","п","р","о","л","д","э","я","с","м","и","т","б","Ё","Й","Ю","Ч","Ь","Щ","Ц","У","К","Е","Н","Г","Ш","З","Х","Ъ","Ф","Ы","В","А","П","Р","О","Л","Д","Ж","Э","Я","С","М","И","Т","Б"); $translit = array("zh","yo","i","yu","","ch","sh","c","u","k","e","n","g","sh","z","h","", "f", "y", "v", "a", "p", "r", "o", "l", "d", "ye", "ya", "s", "m", "i", "t", "b", "yo", "I", "YU", "CH", "", "SH", "C", "U", "K", "E", "N", "G", "SH", "Z", "H", "", "F", "Y", "V", "A", "P", "R", "O", "L", "D", "Zh", "Ye", "Ya", "S", "M", "I", "T", "B"); $name = str_replace($cyrillic, $translit, $name); $name=preg_replace($replace_param,'-',$name); $name = urlencode($name); $name = mb_strtolower($name); return $name; }
он использует mb_strtolower уже после перевода в транслит. Тут русская локаль как бы ни при чём. Даже обычная strtolower() справится. Может mb_* функций нет, а вывод ошибок отключён?