Начал по "Ирбис-Школа" изучать постепенно 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
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');
Благодарю.