xmlfilter_parse |  |
xmlfilter_parse -- Проверить разрешения на xml-документ и вернуть документ, в котором содержатся только разрешенные сущности
Описание
string xmlfilter_parse(string $s_src,array $a_param[,array $a_data=array()]);
Требуемая библиотека: xmlfilter.parse
Проверяет разрешения на xml-документ и возвращает документ, в котором
содержатся только разрешенные сущности. Осуществляет проверку имен тегов (tag),
имен атрибутов (attribute), значений атрибутов, имен инструкций
(processing instruction) и имен специальных символов (entity).
Разрешенные сущности возвращаются в таком виде, как они записаны в исходном
xml-документе. Запрещенные сущности либо удаляются, либо для них
производится преобразование символов по следующим правилам:
< -- <
> -- >
" -- "
' -- '
Эти преобразования называются запрещающими преобразованиями.
Эта функция работает относительно долго, поэтому рекомендуется
кешировать
результат выполнения этой функции.
$s_src
-
Исходный xml-документ.
Если в качестве исходного xml-документа указывается правильный xml-документ,
то для этого документа производится проверка разрешений. Если в качестве
исходного xml-документа указывается недопустимый xml-документ, то
проверка разрешений не выполняется и все сущности считаются запрещенными в
этом документе.
$a_param
-
Параметры разрешений и управляющие параметры.
В качестве значения этого аргумента следует передавать ассоциативный массив,
в котором в качестве ключа указывается имя параметра, а в качестве значения
- значение параметра.
Если при описании параметров говорится, что значение некоторого параметра не
указано, то в этом массиве в качестве значения передается логическое
значение истина (true).
$a_data
-
Дополнительные данные.
Значение - ассоциативный массив, в котором в качестве ключа указывается имя
дополнительного данного, а в качестве значения - значение этого
дополнительного данного. Основное назначение - передача информации из
вызывающих скриптов в функции пользователя, которые производят обработку
xml-сущностей.
Например, в службе управления статьями можно построить автоматическое
содержание для текущей статьи. Идентификатор текущей статьи передается в
дополнительном данном.
Все функции пользователя должны правильно отрабатывать в случае, если
дополнительные данные не переданы. Данные могут быть не переданы, потому что
функция xmlfilter_parse может вызываться из разных мест Вашего
проекта, и в некоторых местах таких данных просто не существует. Например,
эта функция вызывается не только для проверки разрешений в статьях, но и для
проверки разрешений в сообщениях форума. Понятно, что из форума не может
прийти данное, указывающее идентификатор текущей статьи. Полагаться на то,
что в форуме эти теги просто будут запрещены не стоит - администратор форума
может их и разрешить.
В качестве предопределенных данных в этом массиве могут передаваться следующие данные:
i_id
-
Идентификатор элемента, соответствующего текущему обрабатываемому данному.
Например, при обработке сообщений в форуме в качестве этого данного передается
идентификатор сообщений, а при обработке статей здесь передается идентификатор статьи.
s_service
-
Имя вызывающей службы. Например, если обрабатывается сообщение форума, то
в качестве этого значения передается строка
forum, а если
обрабатывается статья, то передается строка text.
Внутри библиотеки
xmlfilter.parse
данные i_id и s_service используются только
при генерации сообщений об ошибке. Эта информация добавляется в сообщение
об ошибке для того, что бы Вы, просматривая журнал ошибок, могли узнать не
только сообщение об ошибке (например, «запрещенная сущность»), но и
где именно возникла эта ошибка (например, «в статье с таким-то идентификатором»).
Но Вы можете использовать эти данные и в функциях пользователя. Например,
при построении упоминавшегося выше автоматического содержания именно из
этих данных определяется идентификатор текущей статьи, а так же проверяется,
является ли этот идентификатор идентификатором статьи или идентификатором
чего-то еще (например, сообщения в форуме).
Смотрите так же
Последняя модификация: 27.08.05 19:15 q Не проходите мимо! Оставьте Ваш комментарий в форуме! >>> Цитирование материалов моего сайта приветствуется! при условии видимой действующей! гиперссылки на мой сайт. [Ссылки] Если Вы нашли опечатку на этой странице, пожалуйста, выделите ее мышью и нажмите Ctrl+Enter. Сделаем язык чище! (c) Yuri Popoff, 2004 - 2008, popoff.donetsk.ua, style.donetsk.ua |
|