Как определиь нличие русских букв в URL?

Тема в разделе "PHP", создана пользователем Stripe, 26 июл 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Stripe

    Stripe

    Регистр.:
    21 окт 2007
    Сообщения:
    164
    Симпатии:
    9
    Есть адрес страницы, например
    _http://www.ya.ru/brd/привет_мир/
    Естественно при попытке обратиться к такому урлу из скрипта, получаю ошибку, как определить что ссылка содержит киилицу?
     
  2. Belial

    Belial

    Регистр.:
    1 фев 2010
    Сообщения:
    236
    Симпатии:
    113
    К таким урлам можно обращаться из скрипта предварительно прогоняя их через urlencode().
     
  3. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    это тебе в раздел ЧПУ надо.

    вот маска для htaccess'a
    Код:
    http://[0-9a-zA-Z\.\-_\/]+
    
     
  4. Stripe

    Stripe

    Регистр.:
    21 окт 2007
    Сообщения:
    164
    Симпатии:
    9
    Да это я понял, уже написано, только вот как определить, что там рашен буквы? Тупым сравнением с рашен алфавитом? Элегантнее решения нет?
     
  5. horpah

    horpah

    Регистр.:
    21 июн 2010
    Сообщения:
    200
    Симпатии:
    55
    Смотри коды символов, и сам все поймешь
     
  6. CNiks0N

    CNiks0N lamp.root

    Регистр.:
    28 ноя 2008
    Сообщения:
    230
    Симпатии:
    48
    if ( preg_match('/[а-я]+/iu', $url) )
    {
    echo 'ААА! Рашен!';
    }

    Добавлено через 25 секунд
    /iu - если utf
    /i - если вынь )
     
    Stripe нравится это.
  7. Belial

    Belial

    Регистр.:
    1 фев 2010
    Сообщения:
    236
    Симпатии:
    113
    Единственный вариант, который на ум приходит - preg_match("|[а-я]|i", $url);
    А зачем их определять, если можно все урлы прогонять через urlencode?
     
    Stripe нравится это.
  8. B0nuse

    B0nuse Постоялец

    Регистр.:
    6 июн 2009
    Сообщения:
    105
    Симпатии:
    21
    А чем Вам не нравится "тупое сравнение"?
    Иначе как Вы обясните машине - что конкретно Вы от нее хотите?

    Думаю, задачу нужно поставить немного иначе - Для чего Вам надо определять кириллицу в УРЛ?

    И, отвечая на Ваш вопрос, приведу два решения:
    PHP:
    <?
    $str="http://www.ya.ru/brd/привет_мир/";
    $expreg "/[А-Яа-я]+/ui";
    if ( 
    preg_match$expreg $str ) ) {
        echo 
    'Да'
    }else{
        echo 
    'Нет';
    }
    if(
    mb_ereg('([А-Яа-я]+)'$str)) echo "Да";
    ?>
     
    Stripe нравится это.
  9. Stripe

    Stripe

    Регистр.:
    21 окт 2007
    Сообщения:
    164
    Симпатии:
    9
    Прогони: "http://www.nulled.ws/showthread.php?t=184588"

    И зачем делать лишние телодвиженя, если они не требуются?

    Добавлено через 3 минуты
    Мне кажется сравнивать будет долго. А надо для паука, обход сайта и занесение данных БД, по найденным внутренним ссылкам опять идем и выдираем ссылки и тд и тп.
     
  10. B0nuse

    B0nuse Постоялец

    Регистр.:
    6 июн 2009
    Сообщения:
    105
    Симпатии:
    21
    В любом случае, чтобы что-то определить нужно:
    1. Прочитать
    2. Сравнить
    3. Выдать результат
    Чтобы определить скорость той или иной операции, добавьте в ее начало
    PHP:
    function getmicrotime() 

       list(
    $usec$sec) = explode(" "microtime()); 
       return ((float)
    $usec + (float)$sec); 
    }
    $time_start getmicrotime();
    и в конец
    PHP:
        $time_end getmicrotime();
        
    $time_passed $time_end $time_start;
        echo 
    "Время работы $time_passed секунд.";
     
Статус темы:
Закрыта.