(c) Larry Ewing, Simon Budig, Garrett LeSage
с 1994 г.

Кафедра Информатики и Математического Обеспечения

ПетрГУ | ИМиИТ | О кафедре | Мобильные платформы | Лаборатория ИТС | Семинары НФИ/AMICT
Сотрудники | Выпускники | Учебный процесс | Табель-календарь | Курсовые и выпускные работы
Вычислительные ресурсы | Публикации | Архив новостей | Контактная информация

Цели работы

Получить навыки работы со встроенными функциями php на примере некоторых функций текстовой обработки. Освоить документацию PHP http://php.net, научиться выполнять поиск нужных функций, определять синтаксис, аргументы, возвращаемое значение. Изучить следующие функции текстовой обработки:

chunk_split explode htmlentities htmlspecialchars html_entity_decode htmlspecialchars_decode implode ltrim
rtrim nl2br parse_str str_replace str_split strip_tags strlen strstr
strtok substr_count substr_replace substr trim ucfirst mb_convert_encoding mb_detect_encoding
mb_ereg mb_internal_encoding mb_language mb_split mb_strlen mb_strpos mb_substr mb_substr_count

Описание работы

Необходимо написать скрипт test_generator.php, выводящий тест (который хранится в текстовом файле test_xml) в виде списка следующего вида:

1. Первый вопрос
1.1 Первый ответ на вопрос 1
1.2 Второй ответ на вопрос 1
1.3 Третий ответ на вопрос 1
2. Второй вопрос
2.1 Первый ответ на вопрос 2
2.2 Второй ответ на вопрос 2
Ниже приведен пример содержимого файла test_xml

<?xml version="1.0" standalone="yes"?> 
<test> 

<question id="1">
<name>Первый вопрос</name>
<answer id="1">Первый ответ на вопрос 1</answer>
<answer id="2">Второй ответ на вопрос 1</answer>
<answer id="3">Третий ответ на вопрос 1</answer>
</question>


<question id="2">
<name>Второй вопрос</name>
<answer id="1">Первый ответ на вопрос 2</answer>
<answer id="2">Второй ответ на вопрос 2</answer>
</question>
</test> 

Тест может содержать произвольное количество вопросов и вариантов ответа. Количество символов в строке вопроса/ответа не ограничено. Необходимо выполнить следующую обработку текста:
1) Удалить теги xml;
2) Удалить повторяющиеся пробелы;
3) Удалить пробелы вначале и конце строки;
4) Сделать первый символ вопроса/ответа заглавным;
5) Преобразовать специальные символы (&,", > и т.д.) в коды html.
Выводимый текст не должен выходить за границы видимой области окна браузера, независимо от длины строк вопроса/ответа. Оформление html-страницы может быть любым.

Допустимо следующее упрощение задачи: каждый вопрос/ответ расположен в отдельной строке файла test_xml.

При решении задачи также допускается использование функций PHP, не указанных в целях данной работы (например, функции работы с регулярными выражениями и xml). В этом случае программист сам несет ответственность за проверку обрабатываемого текста на соответствие формату xml.

Критерии оценки работы

Задание оценивается в 8 баллов при условии соблюдения срока, определенного для данной лабораторной работы. При этом задание должно быть выполнено полностью, результат должен соответствовать требованиям задания, автор обязан понимать собственное решение. При несоблюдении сроков сдачи задания, базовый балл уменьшается вдвое каждую пару после срока.

Защищая работу, студент должен продемонстрировать знание общего назначения функций, используемых в решении, а также приведенных в разделе "Цели работы" (например, str_split — преобразование строки в массив), умение пользоваться справочной документацией для получения основной информации (описание функции, формат вызова и т.д.).