Тестирование регулярных выражений на PHP с использованием AJAX

Владимир | | Ajax, PHP.

Наверное, многие слышали о регулярных выражения (regular expressions). Это одно из самых мощных средств обработки текста. Библиотеки для работы с регулярными выражениями написаны практически для всех языков программирования, и часто входят в дистрибутив (например, в PHP и Java).
В этой статье я покажу как написать небольшое, но полезное web приложение, которое позволит тестировать регулярные выражения.

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

Диаграмма действий
Рис.1. Диаграмма действий нашего web приложения

Как видите, все просто. Каждый раз, когда пользователь нажимает кнопку «Поиск» страница (index.html) формирует запрос и отправляет его php скрипту (analyser.php), который возвращает результаты поиска.

В следующий раз я покажу, как написать каждый из компонентов приложения.

Работающее приложение размещено здесь.

Постовой

Эти мягкие игрушки очень понравятся вашему ребенку

  • 5gffgh

    1

  • Serik

    У меня вопрос как на стороне сервера принять JSON и обработать его при помощи PHP.

    function fun(transport){
    var json = transport.responseText.evalJSON();
    alert(json);
    }

    function dataUser() {
    //данные
    var oUser = new Object();
    oUser.login = $('login').value;
    oUser.pass = $('pass').value;
    var sJSON = Object.toJSON(oUser);
    //отправляем ajax запрос
    new Ajax.Request('test.php', {method:'get', parameters:sJSON, onSuccess: fun});
    }

    Данные в заросе post выходят:
    {"login": "log123", "pass": "123"}

    $_POST[sJSON] — пустой ???
    Как получить полный ???

    • Попробуйте изменить
      …parameters:sJSON…
      на
      …parameters:»sJSON=» + sJSON…

      Кстати, есть интересный плагин к jQuery jquery-json. Постараюсь в ближайшее время на эту тему пост написать.

  • Serik

    У меня вопрос как на стороне сервера принять JSON и обработать его при помощи PHP.

    function fun(transport){
    var json = transport.responseText.evalJSON();
    alert(json);
    }

    function dataUser() {
    //данные
    var oUser = new Object();
    oUser.login = $('login').value;
    oUser.pass = $('pass').value;
    var sJSON = Object.toJSON(oUser);
    //отправляем ajax запрос
    new Ajax.Request('test.php', {method:'get', parameters:sJSON, onSuccess: fun});
    }

    Данные в заросе post выходят:
    {"login": "log123", "pass": "123"}

    $_POST[sJSON] — пустой ???
    Как получить полный ???

    • Попробуйте изменить
      …parameters:sJSON…
      на
      …parameters:»sJSON=» + sJSON…

      Кстати, есть интересный плагин к jQuery jquery-json. Постараюсь в ближайшее время на эту тему пост написать.

  • …parameters:»sJSON=» + sJSON… тоже не работает

  • …parameters:»sJSON=» + sJSON… тоже не работает

  • Zhmenya88

    А можно сделать наоборот? чтоб с помощью регулярных выражений проверялась введенная информация?

    • Да, можно. По-сути, регулярное выражение проверят соответствие текста заданному шаблону.

      Поэтому вам нужно правильно сформировать этот шаблон.