За последние 24 часа нас посетил 62721 программист и 1769 роботов. Сейчас ищут 828 программистов ...

Редирект с больших буковок на маленькие

Тема в разделе "PHP для новичков", создана пользователем laszlopv, 31 окт 2018.

  1. laszlopv

    laszlopv Активный пользователь

    С нами с:
    26 фев 2017
    Сообщения:
    244
    Симпатии:
    40
    Привет! Написал небольшую функцию по редиректу, посмотрите, скажите своe мнение, предложите свои варианты если есть желание. В итоге хочу собрать максимум интересных вариантов и написать что-то вроде статьи на данную тему.

    PHP:
    1. function redirect_from_upper_to_lower()
    2.     {
    3.         $array_string = str_split($_SERVER['REQUEST_URI'], 1);
    4.  
    5.         foreach ($array_string as $value) {
    6.  
    7.             if (ctype_alpha($value)) {
    8.                 if ((ctype_lower($value) != true)) {
    9.                     $str = mb_strtolower($_SERVER['REQUEST_URI']);
    10.                     header("HTTP/1.1 301 Moved Permanently");
    11.                     header("Location: " . $str);
    12.                 }
    13.             }
    14.         }
    15.     }
     
  2. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    Байты строки и так адресуемы, как элементы массива. Зачем использовать mb_-функцию? Кодировка адреса однобайтная.

    Гляньте код фильтра тут. Может, не самый оптимальный вариант из-за сравнения исходной и обработанной строки, но достаточно компактный.

    Вы собрались делать редирект на каждый чих символ отдельно? :) Нужно наоборот пытаться объединять редиректы (пример также см. в показанном фильтре).
     
    #2 miketomlin, 31 окт 2018
    Последнее редактирование: 31 окт 2018
  3. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    Хотя нет. Замена однотипных заголовков в header работает дефолтом, но все равно как-то криво смотрится.