Наверное, многие слышали о регулярных выражения (regular expressions). Это одно из самых мощных средств обработки текста. Библиотеки для работы с регулярными выражениями написаны практически для всех языков программирования, и часто входят в дистрибутив (например, в PHP и Java). В этой статье я покажу как написать небольшое, но полезное web приложение, которое позволит тестировать регулярные выражения. Я уже писал о работе с регулярными выражениями на Java (Анализ данных с помощью регулярных выражений или быстрый способ проверки введенных данных), поэтому сейчас мы посмотрим какие возможности в этой области предоставляет PHP. Тем более, что для нашего web приложения PHP удобнее (нам понадобиться всего один скрипт). Теперь пару слов о самих регулярных выражениях.
Это текстовые строки, в которых по специальным правилам задается шаблон для поиска фрагмента текста. Например, выражение /а.*с/ соответствует любой последовательности символов, которая начинается с буквы «а» и заканчивается буквой «с». С помощью регулярных выражений можно выполнять поиск и замену фрагментов текста, проверять правильность ввода данных и многое другое. Подробнее почитать о составе и использовании регулярных выражений можно здесь. Ладно, то, что регулярные выражения вещь полезная и удобная мы выяснили.
Теперь вернемся к нашему приложению. В первую очередь, нам нужно определиться, что именно оно должно делать. На мой взгляд, больше всего проблем возникает из-за ошибок в самих регулярных выражениях. Самое неприятное то, что эти ошибки неудобно отслеживать даже с помощью хорошей IDE. Приходиться выполнять отладку программы для всех возможных вариантов введенного текста, который нужно проанализировать с помощью регулярного выражения.
При этом нужно просматривать результаты анализа, а это обычно массив строк. Поэтому было бы гораздо удобнее сначала протестировать регулярное выражение, а потом использовать его в программе. Т. е. наше приложение должно получать само регулярное выражение, текст в котором будет выполняться поиск, и выводить все фрагменты текста, которые соответствуют шаблону. Для того, чтобы немного ускорить работу приложения мы используем технологию Ajax.
Это позволит не перезагружать всю страницу после каждой операции поиска, а только обновлять результаты. Экономия для нашего приложения конечно небольшая, но она есть. Итак, нам нужна html страница с формой для ввода данных и php скрипт, который будет выполнять поиск в тексте. На рис.1 показана UML диаграмма, иллюстрирующая работу приложения. Рис.1. Диаграмма действий нашего web приложения Как видите, все просто. Каждый раз, когда пользователь нажимает кнопку «Поиск» страница (index. html) формирует запрос и отправляет его php скрипту (analyser. php), который возвращает результаты поиска. В следующий раз я покажу, как написать каждый из компонентов приложения. Работающее приложение размещено здесь. Постовой Эти мягкие игрушки очень понравятся вашему ребенку