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

Статус
В этой теме нельзя размещать новые ответы.

Stripe

Участник
Регистрация
20 Окт 2007
Сообщения
164
Реакции
9
Есть адрес страницы, например
_http://www.ya.ru/brd/привет_мир/
Естественно при попытке обратиться к такому урлу из скрипта, получаю ошибку, как определить что ссылка содержит киилицу?
 
К таким урлам можно обращаться из скрипта предварительно прогоняя их через urlencode().
 
это тебе в раздел ЧПУ надо.

вот маска для htaccess'a
Код:
http://[0-9a-zA-Z\.\-_\/]+
 
К таким урлам можно обращаться из скрипта предварительно прогоняя их через urlencode().
Да это я понял, уже написано, только вот как определить, что там рашен буквы? Тупым сравнением с рашен алфавитом? Элегантнее решения нет?
 
Да это я понял, уже написано, только вот как определить, что там рашен буквы? Тупым сравнением с рашен алфавитом? Элегантнее решения нет?
Смотри коды символов, и сам все поймешь
 
if ( preg_match('/[а-я]+/iu', $url) )
{
echo 'ААА! Рашен!';
}

Добавлено через 25 секунд
/iu - если utf
/i - если вынь )
 
Да это я понял, уже написано, только вот как определить, что там рашен буквы? Тупым сравнением с рашен алфавитом? Элегантнее решения нет?
Единственный вариант, который на ум приходит - preg_match("|[а-я]|i", $url);
А зачем их определять, если можно все урлы прогонять через urlencode?
 
как определить, что там рашен буквы? Тупым сравнением с рашен алфавитом? Элегантнее решения нет?
А чем Вам не нравится "тупое сравнение"?
Иначе как Вы обясните машине - что конкретно Вы от нее хотите?

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

И, отвечая на Ваш вопрос, приведу два решения:
PHP:
<?
$str="http://www.ya.ru/brd/привет_мир/";
$expreg = "/[А-Яа-я]+/ui";
if ( preg_match( $expreg , $str ) ) {
	echo 'Да'; 
}else{
	echo 'Нет';
}
if(mb_ereg('([А-Яа-я]+)', $str)) echo "Да";
?>
 
Единственный вариант, который на ум приходит - preg_match("|[а-я]|i", $url);
А зачем их определять, если можно все урлы прогонять через urlencode?

Прогони: "http://www.nulled.ws/showthread.php?t=184588"

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

Добавлено через 3 минуты
А чем Вам не нравится "тупое сравнение"?
Иначе как Вы обясните машине - что конкретно Вы от нее хотите?
Мне кажется сравнивать будет долго. А надо для паука, обход сайта и занесение данных БД, по найденным внутренним ссылкам опять идем и выдираем ссылки и тд и тп.
 
Мне кажется сравнивать будет долго. А надо для паука, обход сайта и занесение данных БД, по найденным внутренним ссылкам опять идем и выдираем ссылки и тд и тп.
В любом случае, чтобы что-то определить нужно:
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 секунд.";
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху