Учет регистра в php скрипте...

Печать RSS
303

В

Чатланин
0
strtolower вроде с кирилицей в utf-8 не работает.
Автор
Пришелец
0
valerik (15 Июня 2011 / 11:15)
strtolower вроде с кирилицей в utf-8 не работает.
Да похоже так и есть,у меня все команды отдублированы на латинице... !ReSpEkT даже так команда работает,а с кирилическими командами не хочет нивкакую...(((
В

Чатланин
0
используй mb_strtolower($str,'utf-8');
Автор
Пришелец
0
valerik (15 Июня 2011 / 12:17)
используй mb_strtolower($str,'utf-8');
Можно с примером пожалуйста,а то я в пыхе ваще не шарю (((
<?php 
function cmd_user($uin,$msg) // Пользовательские команды 
{ 
global $admin_uin,$static_cmd,$name_room,$flood,$sleep,$size1,$mess1,$while,$time_start,$pogoda,$chat,$i,$room,$users,$time,$size2,$mess2; 
$otvet=false; 
$cmd=explode(' ',$msg); 
$act=explode(' ',trim($msg=@eregi_replace($cmd=strtolower(trim($cmd[0])),'',$msg))); 
$msg=trim(str_replace($act=trim($act[0]),'',$msg)); 
switch(strtolower($cmd))
{ 
case '!да': 
case '!da': // Самобан для особо настойчивых хДД 
chat($uin,mb_convert_encoding('***Пользователь '.$users[$uin]['name'].' забанен на 5 минут***','windows-1251','utf-8')); 
unset($room[$users[$uin]['chat']]['user'][$uin]); 
if(count($room[$users[$uin]['chat']]['user'])<1) 
unset($room[$users[$uin]['chat']]); 
unset($users[$uin]['chat']); 
$users[$uin]['ban']=$time+60*5; 
$otvet='Допрыгался ??? ***уй в баню на 5 мин'; 
break; 
case '!прикол': // приколы 
$otvet="Справка по командам для приколов\r\n"; 
$otvet.="!чмок [ID] - Чмокнуть пользователя в губы\r\n"; 
$otvet.="!трах [ID] - Трахнкть пользователя\r\n"; 
$otvet.="!укус [ID] - Укусить пользователя\r\n"; 
$otvet.="!пнуть [ID] - Пнуть пользователя\r\n"; 
$otvet.="!зуб [ID] - Дать по зубам\r\n"; 
$otvet.="!любовь [ID] - Признатся в любви\r\n"; 
$otvet.="!трусы [ID] - Снять трусы\r\n"; 
break; 

case '!stop': // Остановка бота, точнее закрытие соединение с АОЛ сервером и остановка цикла с интелектом бота 
/////////////////////////////////////// 
fseek($BIN_BOT,0); 
fwrite($BIN_BOT,pack('CL',2,time())); 
/////////////////////////////////////// 
$otvet='Операция выполнена!'; 
break; 
case '!restart': 
case '!рестарт': 
$i->stopper=false; 
$otvet='Перезапуск выполняется ...'; 
break; 
default: 
} 
return $otvet; 
} 

?>
Что и куда тут писать...???
Автор
Пришелец
0
Ну все с командами разобрался с регисторм,спасибо valerik...

Добавлено через 05:39 сек.
Теперь другая проблема,тоже с учетом регистра,вот функция викторины в файле
bot.php
...
if($chat==$room_vik){
if($vopros['user']!="" and $vopros['user']!="bot"){
$mes="Поздравляем ".$vopros['user']."! Приз 100 баллов...\r\nСледующий вопрос через 2 мин\r\n~~~\r\n";
$vopros['time']=time();$vopros['user']="";
$users[$uin]['bal']=$users[$uin]['bal']+100;
saved($users);
$mes=mb_convert_encoding($mes,'windows-1251','utf-8');

}
if($vopros['time']<(time()-$room_vik_time)){
$file=file("vopros.txt");
$count=count($file);
$rand=mt_rand(0,($count-1));
$vop=explode('::',$file[$rand]);
$vopros['user']="";
$vop[1]=mb_convert_encoding($vop[1],'windows-1251','utf-8');
$vopros['otvet']=trim($vop[1]);
$vopros['time']=time();
$mes="Вопрос: ".$vop[0]." (".strlen($vopros['otvet'])." букв)\r\n~~~\r\n";
$mes=mb_convert_encoding($mes,'windows-1251','utf-8');}
$mess=$mes;
}
...
Вопросы и ответы берет из текстового файла vopros.txt:
...
академик, создатель новых высокоурожайных сортов пшеницы.::цицин
академик, учёный в области ж/дорог; нар. артист ссср.::образцов
аквариумное водное растение травянистое растение.::рдест
алжирский писатель, автор трилогии «алжир».::диб
алжирский писатель, роман «танец короля».::диб
американское индейское племя.::инки
англия, графство.::дербишир
....
Как тут избежать учета регистра...

Добавлено через 08:26 сек.
Чтоб не учитывал регистр при ответе,а то если напишешь "Инки" он его не защитает как правильный ответ,а если "инки" ,то все нормалек....

Голубые штаны
0
case '!респект':
а регуляркой не проще ли? Выбираешь из фразы команду и при совпадении - выполняешь ее........
И

Оранжевые штаны
0
15. Как то так: $vopros['otvet']=mb_strtolower(trim($vop[1]); ,'utf-8');
Только этот кусок кода не тот= ) нужен там где обрабатыватся ответ

Добавлено через 03:19 сек.
Просто там где идет обработка ответа на вопрос применяй фун-ию mb_strtolower($str,'utf-8'); и к ответу из файла и ответа пользователя.
Изменил: Игорь (21.06.2011 / 11:51)
Автор
Пришелец
0
17. rezent, Вот еще есть....
....
if($users[$msg['from']]['chat']==$room_vik){


$sg=mb_convert_encoding($msg['text'],'windows-1251','utf-8');
if($sg==$vopros['otvet']){
$vopros['user']=$users[$msg['from']]['name'];
$vopros['chat']=2;$vopros['chat']=2;$vopros['otvet']=$sg;
$users[$msg['from']]['reit']++;
}


}
.....
больше нигде нету (((
И

Оранжевые штаны
0
Добавлено через 01:34 сек.
А нет стой...Ошибочка...
В условии так сделай:
if($sg==$vopros['otvet']){
на
<?php if ( mb_strtolower( $vopros['otvet'] , 'utf-8' ) == mb_strtolower( $sg , 'utf-8' ) ) {
Изменил: Игорь (21.06.2011 / 12:03)
Автор
Пришелец
0
rezent
В условии так сделай:
if($sg==$vopros['otvet']){
на
<?php if ( mb_strtolower( $vopros['otvet'] , 'utf-8' ) == mb_strtolower( $sg , 'utf-8' ) ) {
Хех...нее теперь ваще лажа,не то что регистр,ему теперь и само слово пофиг...гЫЫЫ,теперь хоть х*й напиши ему все равно правильно....
ЧаТеГг* (21/Июнь/2011,вторник(12:50:07)) 
Вопрос: Мягкая бархатистая кожа для изгот. обуви, одежды, перчаток (5 букв)
~~~
 Макс Романов (21/Июнь/2011,вторник(12:50:15)) 
з*лупа
 ЧаТеГг* (21/Июнь/2011,вторник(12:50:16)) 
Поздравляем Максимка! Приз 100 баллов...
Следующий вопрос через 2 мин
~~~
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск