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

1. Макс (15.06.2011 / 09:20)
Народ помогите кто знает как отключить учет регистра в скрипте,ща приведу пример:
Вот есть скрипт ICQ чата на php,в нем есть команды...и определенные действия на эти команды,допустим !вход - при этом юзера подключает к чату....но если он напишет !Вход(с большой буквой) - то это уже не проходит проверку на команду,и выдаст: такой команды нет...вот как сделать чтобы регистр не учитывался ?????

Добавлено через 09:14 сек.
Вот пример команды:
case '!респект':
foreach($users as $num=>$arr){
if($arr['id']==$act){
if($users[$uin]['bal']<300){
$otvet='У вас недостаточно баллов для пополнения рейтинга';
}else{
$users[$uin]['bal']=$users[$uin]['bal']-300;
$users[$num]['reit']=$users[$num]['reit']+1;
saved($users);
$otvet='Вы повысили рейтинг пользователю '.$arr['name'].' с вас списано 300 баллов';
chat($uin,mb_convert_encoding('***'.$users[$uin]['name'].' повысил рейтинг пользователю '.$arr['name'].' ***','windows-1251','utf-8'));
}
}
}
break;

Тоесть если юзер напишет !респект - то выполнится это действие повышения рейтинга,а если !Респект или !реСпеКТ,то нихрена не произойдет и его команда просто уйдет в чат как сообщение...вот как сделать чтобы регистр не учитывался ???

2. Андрей (15.06.2011 / 09:33)
переводи в нижний регистр. strtolover(строка);

3. Макс (15.06.2011 / 09:33)
 Я (15/Июнь/2011,среда(09:30:29)) 

!Все

 ЧаТеГг* (15/Июнь/2011,среда(09:30:29)) 

Такой команды нет !!! =)
Отправьте !помощь или !help для вывода всех доступных команд.

 Я (15/Июнь/2011,среда(09:30:42)) 

!все

 ЧаТеГг* (15/Июнь/2011,среда(09:30:43)) 

Список онлайн:

 ~ Комната Главная *DRINK* [0] ~
7|Марфуся:-* 
---
Пример работы скрипта чата на PHP...


4. Валерий (15.06.2011 / 09:34)
http://moneymaster.ru/tutor/php1/gl3_11.php.htm#3

5. Макс (15.06.2011 / 09:35)
Фанат (15 Июня 2011 / 09:33)
переводи в нижний регистр. strtolover(строка);
Извени а можно подробней че где и как,я далек от php,химичу так на поверхности...

6. KOZZ (15.06.2011 / 09:41)
2. Фанат, поправочка: strtolower

7. Андрей (15.06.2011 / 09:41)
switch(strtolower(переменная в которую приходит значение)) {
...
case "!респект":
...
break;
}

Добавлено через 01:44 сек.
6. Спасибо. С телефона не привык писатьsmile

8. Макс (15.06.2011 / 09:48)
Вот часть кода(убрал середину с остальными командами,че куда тут написать и вставить ...???
<?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($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;
}

?>


9. Андрей (15.06.2011 / 09:52)
там где switch($cmd) поменять на switch(strtolower($cmd))

10. Макс (15.06.2011 / 10:15)
Чета нифига все равно если пишешь !Вход а не !вход...ответ нет такой команды..(((

11. Валерий (15.06.2011 / 11:15)
strtolower вроде с кирилицей в utf-8 не работает.

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

13. Валерий (15.06.2011 / 12:17)
используй mb_strtolower($str,'utf-8');

14. Макс (19.06.2011 / 10:59)
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; 
} 

?>
Что и куда тут писать...???

15. Макс (21.06.2011 / 03:28)
Ну все с командами разобрался с регисторм,спасибо 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 сек.
Чтоб не учитывал регистр при ответе,а то если напишешь "Инки" он его не защитает как правильный ответ,а если "инки" ,то все нормалек....

16. Дмитрий (21.06.2011 / 03:39)
case '!респект':
а регуляркой не проще ли? Выбираешь из фразы команду и при совпадении - выполняешь ее........

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

Добавлено через 03:19 сек.
Просто там где идет обработка ответа на вопрос применяй фун-ию mb_strtolower($str,'utf-8'); и к ответу из файла и ответа пользователя.

18. Макс (21.06.2011 / 11:48)
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']++;
}


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

19. Игорь (21.06.2011 / 11:53)
Добавлено через 01:34 сек.
А нет стой...Ошибочка...
В условии так сделай:
if($sg==$vopros['otvet']){
на
<?php if ( mb_strtolower( $vopros['otvet'] , 'utf-8' ) == mb_strtolower( $sg , 'utf-8' ) ) {


20. Макс (21.06.2011 / 12:54)
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 мин
~~~


21. Игорь (21.06.2011 / 13:02)
Хмм..странно..мб где накосячил?

22. Макс (21.06.2011 / 13:20)
Блин че делать то,у многих привчка писать слово с большой буквы...

23. Игорь (21.06.2011 / 13:28)
Да вроде все правильно.
Ответ в нижнем регистре? mb_strtolower( $vopros['otvet'] , 'utf-8' ) -> Да
Ответ юзера в нижнем регистре? mb_strtolower( $sg , 'utf-8' ) -> Да
Условие: if ( mb_strtolower( $sg , 'utf-8' ) == mb_strtolower( $vopros['otvet'] , 'utf-8' ) ) { -> Да

Добавлено через 02:39 сек.
Уточню: перемнная $sg - это сообщение юзера?

24. Макс (21.06.2011 / 13:49)
rezent
Уточню: перемнная $sg - это сообщение юзера?
$sg=mb_convert_encoding($msg['text'],'windows-1251','utf-8');
Ну получается так $sg - это сообщение юзера

Добавлено через 01:08 сек.
Блин че за хрень,мож тебе полность файл скинуть ??? Сам посмотришь,я ваще в этом нуб....

25. Игорь (21.06.2011 / 15:38)
Все дело вот в этой строке: $sg=mb_convert_encoding($msg['text'],'windows-1251','utf-8');
Удалишь ее и будет все норм. Пока не понял почему) И зачем она тут нужна. ПРобывал обе строки конвертировать итог тотже, тобишь нефига, а вот как добавляешь буквы англ. языка То норм работает smile

26. Игорь (21.06.2011 / 15:52)
Только не забудь заместо:
<?php 
$sg = mb_convert_encoding( $msg['text'],'windows-1251','utf-8' );
написать:
<?php
$sg = $msg['text'];
E

27. Макс (21.06.2011 / 18:23)
rezent (21 Июня 2011 / 15:52)
Только не забудь заместо:
<?php 
$sg = mb_convert_encoding( $msg['text'],'windows-1251','utf-8' );
написать:
<?php
$sg = $msg['text'];
E
Корочь фиг его знает,так он ваще ответы не принимает....ноль реакции,хрень какая то,я в панике...хДД

28. Игорь (22.06.2011 / 11:30)
о_0 странно...у меня все получилось...скинь тогда файл в ПМ

29. Макс (22.06.2011 / 18:27)
28. rezent, куда файл скинуть...???

Добавлено через 03:35 сек.
Скачать

30. Тимофей (22.06.2011 / 18:34)
stimul-tem (22 Июня 2011 / 18:27)
28. rezent, куда файл скинуть...???

Добавлено через 03:35 сек.
Скачать
обычно кидают файлы на обменник типо upwap.ru

31. Игорь (22.06.2011 / 18:58)
на обменник из 30 поста

32. Макс (22.06.2011 / 22:20)
31. rezent,а ну теперь понял...невьехал прост "ПМ"
ты не скачал из 29 поста,файл ?

33. Макс (22.06.2011 / 22:48)
bot.php

URL: https://visavi.net/topics/22434