Powered by CodeIgniter

Парсер

Парсер служит для фильтрации входных данных, но может обрабатывать и информацию на выходе, для чего работает в двух состояниях — prepare и process. Установить фильтры можно на несколько групп элементов:
  • input — на все поля типа input.
  • textarea — на все поля типа textarea, включая поля с редактором.
  • comment — на все комментариев. Комментарии были выделены отдельно для удобства их фильтрации.
  • other — все другие элементы.
// Пост-процессная обработка информация $node['body'] = $this->parser->process($node['body'],'textarea'); $this->_template('!nodes node',$node); // Подготовка информации для запись в базу данных осуществляется автоматически $data = $this->parser->prepare($data,$type);

Хуки парсера

Достаточно добавить название функции обработки в массивы пост-процессной или подготовительной обработок.
/** * Add parser rules for jevix processing. * * @param object $Parser * @return void */ function jevix_parser_construct_(&$Parser){ /* * Можно по простому * $Parser->prepare['input'][] = 'parse_jevix|comment'; * А можно и на определенное место в массиве */ array_insert($Parser->prepare['textarea'],'parse_jevix|node',0); array_insert($Parser->prepare['comment'],'parse_jevix|comment',0); /* * Обратите внимание на строку с названием функции parse_jevix|node * parse_jevix -- вызов функции без параметров * parse_jevix|node -- вызов функции с параметром node */ // Вызов метода определенной модели array_insert($Parser->prepare['textarea'],array('Textile','parse'),0); // Вызов метода (с параметрами) определенной модели array_insert($Parser->prepare['textarea'],array('Textile','parse|FALSE|TRUE'),0); } // ------------------------------------------------------------------------ /** * Parse code with jevix * * @param string $value Recieved data. ... * @return string */ function parse_jevix($value,[$type = 'node',$autobr = TRUE]){ ... return $value; } // ------------------------------------------------------------------------