За последние 24 часа нас посетили 25812 программистов и 1726 роботов. Сейчас ищут 817 программистов ...

не работает strtolower, что применить?

Тема в разделе "PHP для новичков", создана пользователем OZ-Style, 25 май 2010.

  1. OZ-Style

    OZ-Style Активный пользователь

    С нами с:
    21 май 2010
    Сообщения:
    26
    Симпатии:
    0
    есть вот такой скрипт для ЧПУ, но его проблем в том что он в строке 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;
    }
     
  2. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    кодировку указать попробуйте,
    натравите strtolower() на латинский текст
    и самый тупой вариант: в списке замены все заглавные буквы замените на прописные
     
  3. OZ-Style

    OZ-Style Активный пользователь

    С нами с:
    21 май 2010
    Сообщения:
    26
    Симпатии:
    0
    пробовал изменить заглавные на прописные в списке, не помогает, даже не пойму почему

    указать кодировку как именно?
     
  4. OZ-Style

    OZ-Style Активный пользователь

    С нами с:
    21 май 2010
    Сообщения:
    26
    Симпатии:
    0
    Не пойму, почему так не работает????

    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;
    }
     
  5. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    у меня эта функция работает
     
  6. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород
  7. OZ-Style

    OZ-Style Активный пользователь

    С нами с:
    21 май 2010
    Сообщения:
    26
    Симпатии:
    0
    не могу пока это применить т.к. не знаю как...
     
  8. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    setlocale(LC_ALL,"ru_RU.cp1251");
    strtolower()
     
  9. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    он использует mb_strtolower уже после перевода в транслит. Тут русская локаль как бы ни при чём. Даже обычная strtolower() справится.
    Может mb_* функций нет, а вывод ошибок отключён?