1: <?php defined('_JOOS_CORE') or exit();
2:
3: /**
4: * Библиотека фильтрации данных
5: *
6: * @version 1.0
7: * @package Core\Libraries
8: * @subpackage Filter
9: * @category Libraries
10: * @author Joostina Team <info@joostina.ru>
11: * @copyright (C) 2007-2012 Joostina Team
12: * @license MIT License http://www.opensource.org/licenses/mit-license.php
13: * Информация об авторах и лицензиях стороннего кода в составе Joostina CMS: docs/copyrights
14: *
15: * */
16: class joosFilter
17: {
18: /**
19: * Преобразует символы в соответствующие HTML сущности
20: *
21: * @param string $value строка для
22: * @param string $quoteStyle одно из доступных значений ENT_COMPAT, ENT_QUOTES, ENT_NOQUOTES
23: *
24: * @return string преобразованная строка
25: */
26: public static function htmlentities($value, $quoteStyle = ENT_QUOTES)
27: {
28: return htmlentities($value, $quoteStyle, 'UTF-8');
29: }
30:
31: /**
32: * Преобразует специальные символы в HTML сущности
33: *
34: * @param string $value строка для
35: * @param string $quoteStyle - одно из доступных значений ENT_COMPAT, ENT_QUOTES, ENT_NOQUOTES
36: *
37: * @return string преобразованная строка
38: */
39: public static function htmlspecialchars($value, $quoteStyle = ENT_QUOTES)
40: {
41: return htmlspecialchars($value, $quoteStyle, 'UTF-8');
42: }
43:
44: /**
45: * "Обезопасивание" сущностей. Защищает данные от вывода их в прямом HTML формате.
46: * Варианты использования - в формах или небезопасных выводах
47: *
48: * @param mixed $mixed строка массив или объект для обезопасивания
49: * @param const $quote_style тип зашиты - ENT_COMPAT, ENT_QUOTES или ENT_NOQUOTES
50: * @param mixed $exclude_keys массив или название ключа массива или поля объекта которые обезопасивать не стоит
51: *
52: * @return mixed обезопасенная сущность
53: */
54: public static function make_safe(&$mixed, $quote_style = ENT_QUOTES, $exclude_keys = '')
55: {
56: if (is_object($mixed)) {
57: foreach (get_object_vars($mixed) as $k => $v) {
58: if (is_array($v) || is_object($v) || $v == null || substr($k, 1, 1) == '_') {
59: continue;
60: }
61: if (is_string($exclude_keys) && $k == $exclude_keys) {
62: continue;
63: } elseif (is_array($exclude_keys) && in_array($k, $exclude_keys)) {
64: continue;
65: }
66: $mixed->$k = htmlspecialchars($v, $quote_style, 'UTF-8');
67: }
68: } elseif (is_string($mixed)) {
69: return htmlspecialchars($mixed, $quote_style, 'UTF-8');
70: }
71: }
72:
73: /**
74: * Perform a joosHtml::specialchars() with additional URL specific encoding.
75: *
76: * @param string string to convert
77: * @param boolean encode existing entities
78: *
79: * @return string
80: */
81: public static function specialurlencode($str, $double_encode = TRUE)
82: {
83: return str_replace(' ', '%20', joosFilter::htmlspecialchars($str, $double_encode));
84: }
85:
86: }
87: