Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Закрытая темаСоздание новой темыСоздание опроса

> Проблема с функцией switch, в частности strtolower, Не пойму, в чем соль
shpilson  
 ۩  [x]    Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 16
Пользователь №: 27123
На форуме: 5 лет, 11 месяцев, 27 дней
Карма:




Привет, форум.
Начал по "Ирбис-Школа" изучать постепенно php и после прохождения темы "Switch" решил попробовать написать свой код, немного усложнив. Скрипт для того, что бы выводилось школьное расписание. Написал код, всё хорошо работает - при вводе в текстовое поле, например "Понедельник" - он выводит таки расписание на понедельник, НО я решил ещё усложнить: сделать так, чтобы вне зависимости от регистра ввода дней недели у меня выводилось расписание. Поясню, например если пользователь напишет: "понедельник" или "пОнЕдЕльНик", то ему всё ровно выдаст расписание на этот учебный день. Надеюсь я понятно объяснил то, что я хочу сделать.
Так вот, решил сделать это с помощью функции strtolower, изменил - проверил - не работает. Нет реакции на ввод, ввел и тебе показывает дефолтную фразу. Попробовал добавил в switch новый "день недели" и назвал его "test" и заработало, но только если ты и вводишь в поле текстовое test. То есть я так понял, он не понимает русского языка или strtolower не реагирует на русский язык. Создал новый файл полностью на английском - заработало. Хотя смысл - тот же. Кодировка UTF-8 и в редакторе и на сайте, я не знаю где ошибка. Просьба глянуть код и помочь:


<html>
<head>
<title>

Школьное расписание
</title>
</head>
<body>
<p>
Здесь можно узнать школьное расписание на любой день!</p><br />


<?php

header("Content-Type: text/html; charset=utf-8");

/* ПЕРЕМЕННЫЕ. Начало */
$a = isset($_POST['day']) ? $_POST['day'] : null;
$a = strtolower($a);
$b = '<center><img src="bad_day.jpg" alt="Bad Day" /></center>';
$c = '<center><img src="good_day.jpg" alt="Good Day" /></center>';
/* ПЕРЕМЕННЫЕ. Конец */

switch($a)
{
case "понедельник" :
echo '<b>Понедельник:</b><br />';
echo 'Русский язык<br />' . "\n" . 'Физкультура<br />' . "\n" .'Биология<br />' . "\n" . 'География<br />' . "\n" . 'Английский язык<br />';
echo $c;
break;

case 'Вторник' :
echo '<b>Вторник:</b><br />';
echo 'История России<br />' . "\n" . 'Химия<br />' . "\n" .'Алгебра<br />' . "\n" . 'Георгафия<br />' . "\n" . 'Русский язык<br />' . "\n" . 'Английский язык<br />';
echo $b;
break;

case 'Среда' :
echo '<b>Среда:</b><br />';
echo 'Английский язык<br />' . "\n" . 'Алгебра<br />' . "\n" .'Физкультура<br />' . "\n" . 'Русский язык<br />' . "\n" . 'Геометрия<br />' . "\n" . 'Биология<br />' . "\n" . 'Информатика<br />';
echo $b;
break;

case 'Четверг' :
echo '<b>Четверг:</b><br />';
echo 'Информатика<br />' . "\n" . 'Физика<br />' . "\n" .'Всеобщая история<br />' . "\n" . 'Алгебра<br />' . "\n" . 'Обществознание<br />' . "\n" . 'Физкультура<br />';
echo $c;
break;

case 'Пятница' :
echo '<b>Пятница:</b><br />';
echo 'Физика<br />' . "\n" . 'Геометрия<br />' . "\n" .'Английский язык<br />' . "\n" . 'Химия<br />' . "\n" . 'О.Б.Ж<br />' . "\n" . 'Литература<br />';
echo $b;
break;

case 'Суббота' :
echo '<b>Суббота:</b><br />';
echo 'Черчение<br />' . "\n" . 'Алгебра<br />' . "\n" .'Русский<br />' . "\n" . 'История<br />' . "\n" . 'Алгебра<br />';
echo $c;
break;

case 'Воскресенье' :
echo '<b>Воскресенье:</b><br />';
echo 'Выходной в Воскресенье, забыл?';
echo $c;
break;

case "test" :
echo 'test' . 'test';
echo 'test';
break;

default :
echo 'Введите название с большой буквы, например "<b>Понедельник</b>", без ковычек!';
break;
}
?>

<form
method="post">
<input
name="day" type="text"/>
<input
name="ok" type="submit"/>
</form>

</body>
</html>





Спустя 4 минуты, 4 секунды (1.12.2011 - 14:51) inpost написал(а):
Для ютф - специальная библиотека mb_ , для почти всех строковых функций:
http://php.net/manual/ru/function.mb-strtolower.php

Спустя 51 секунда (1.12.2011 - 14:52) inpost написал(а):
К тому же у тебя ошибка, header("Content-Type: text/html; charset=utf-8") - это заголовок, его надо указывать до вывода ЛЮБОЙ информации на экран. В самом начале прописать.

Спустя 13 минут, 33 секунды (1.12.2011 - 15:06) shpilson написал(а):
Заработало:
$a = mb_strtolower($a, 'UTF-8');

Благодарю.
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Закрытая темаСоздание новой темыСоздание опроса