Содержание


Standart Filter Classes


Стандартные классы фильтров, Фильтры, Filter, ЗФ2, Zend Framework 2, ZF2, ру, ru




Zend Framework поставляется со стандартным набором готовых фильтров, которые вы можете использовать.

 

 

 

 

Alnum (буквенно-цифровой)

 

Фильтр Alnum используется, чтобы возвращать только символы алфавита и цифры, соответствующие категориям юникода "буква" и "число". Все остальные символы будут подавлены.

 

Поддерживаемые параметры фильтра Alnum

 

Поддерживаются следующие параметры для фильтра Alnum:

Alnum([ boolean $allowWhiteSpace [, string $locale ]])

 

$allowWhiteSpace: если параметр установлен в true, пробельные символы допускаются. В противном случае - подавляются. Значение по умолчанию - false (пробелы не допускаются). 

Также доступны методы для получения / установки параметра allowWhiteSpace: getAllowWhiteSpace() и setAllowWhiteSpace()

 

$locale: локаль, используемая для идентификации символов при фильтрации (имя локали, например, en_US). Если параметр не установлен, будет использована локаль по умолчанию (Locale :: getDefault ()).

Также доступны методы для получения / установки локали: getLocale() и setLocale().

 

Использование фильтра Alnum

// Настройки по умолчанию, запрещают пробелы
$filter = new \Zend\I18n\Filter\Alnum();
echo $filter->filter("Это (моя) информация: 123");
// Возвращает "Этомояинформация123"
 
// Первый параметр конструктора - $allowWhiteSpace
$filter = new \Zend\I18n\FilterAlnum(true);
echo $filter->filter("Это (моя) информация: 123");
// Возвращает "Это моя информация 123");
 

Примечание

Внимание: Alnum работает почти со всеми языками, кроме китайского, японского и корейского. Для этих языков английский алфавит используется вместо символов этих языков. Сам язык определяется посредством локали.

 

 

 

 

Alpha (буквенный)

 

Фильтр Alpha используется, чтобы возвращать только символы алфавита, соответствующие категории юникода "буква".

 

Поддерживаемые параметры для фильтра Alpha

 

Поддерживаются следующие параметры для Alpha:

Alpha([ boolean $allowWhiteSpace [, string $locale ]])

 

$allowWhiteSpace: если параметр установлен в true, пробельные символы допускаются. В противном случае - подавляются. Значение по умолчанию - false (пробелы не допускаются). 

Также доступны методы для получения / установки параметра allowWhiteSpace: getAllowWhiteSpace() и setAllowWhiteSpace()

 

$locale: локаль, используемая для идентификации символов при фильтрации (имя локали, например, en_US). Если параметр не установлен, будет использована локаль по умолчанию (Locale :: getDefault ()).

Также доступны методы для получения / установки локали: getLocale() и setLocale().

 

Использование фильтра Alpha


// Настройки по умолчанию, запрещают пробелы
$filter = new \Zend\I18n\Filter\Alpha();
echo $filter->filter("Это (моя) информация: 123");
// Возвращает "Этомояинформация"
 
// Разрешает пробелы
$filter = new \Zend\I18n\Filter\Alpha(true);
echo $filter->filter("Это (моя) информация: 123");
// Возвращает "Это моя информация "
 

Примечание

Внимание: Alpha работает почти со всеми языками, кроме китайского, японского и корейского. Для этих языков английский алфавит используется вместо символов этих языков. Сам язык определяется посредством локали.

 

 

 

 

BaseName (имя файла)

 

Zend\Filter\BaseName позволяет фильтровать строки, которые содержат путь к файлу и возвращает имя этого файла. 

 

Поддерживаемые параметры

 

Для Zend\Filter\BaseName нет дополнительных параметров.

 

Основы использования

 

Ниже приведен простой пример использования:

$filter = new Zend\Filter\BaseName();
print $filter->filter('/vol/tmp/filename');
Вернет "filename".
 
$filter = new Zend\FilterBaseName();
print $filter->filter('/vol/tmp/filename.txt');
Вернет "filename.txt".
 

Boolean (логический тип)

 

Этот фильтр изменяет заданные исходные данные на значения логического типа. Часто это полезно при работе с базами данных или при обработке значений, поступивших из формы.

 

Поддерживаемые параметры

 

Для Zend\Filter\Boolean поддерживаются следующие параметры:

casting (приведение к типу): если этот параметр установлен в TRUE, любые исходные данные будут приведены  к значению логического типа. Значение по умолчанию для этого параметра - TRUE.

locale (локаль): этот параметр задает локаль, которая будет использована для распознавания информации, адаптированной к языку.

type (тип): параметр type устанавливает логический тип, который следует использовать. Подробности читайте ниже.

 

Поведение по умолчанию

 

По умолчанию этот фильтр приводит исходные данные к логическому типу, другими словами, он работает аналогично вызову (boolean) $value.

$filter = new Zend\Filter\Boolean();
$value  = '';
$result = $filter->filter($value);
// возвращает false
 

Это означает, что без специфической конфигурации Zend\Filter\Boolean принимает все исходные типы и возвращает значение логического типа точно так же, как вы получили бы его при приведении к типу boolean.

Но иногда приведение к типу с помощью (boolean) может оказаться недостаточно. Zend\Filter\Boolean позволяет настроить определенные типы,  для которых нужно выполнить преобразования, а также те, которые нужно опустить.

 

Следующие типы могут быть обработаны:

boolean:         возвращает логическое значение, как есть.

integer:           в случае, если целое равно 0, преобразует его в FALSE.

float:                преобразует число с плавающей запятой 0.0 в FALSE.

string:             преобразует пустую строку "" в FALSE.

zero:                преобразует строку, содержащую единственный символ нуль ('0') в FALSE.

empty_array: преобразует пустой массив в FALSE.

null:                 преобразует NULL в FALSE.

php:                 преобразует значения в соответствии с правилами php при приведении их к логическому типу.

false_string:  преобразует строку, содержащую слово "false" в логическое FALSE.

yes:                 преобразует локализованную строку, содержащую слово "нет" в FALSE.

all:                   преобразует все приведенные выше типы к значению логического типа.

 

Любые другие значения будут возвращать TRUE по умолчанию.

 

Существует несколько способов, чтобы выбрать, какие из перечисленных выше типов подвергнутся фильтрации. Вы можете задать один или несколько типов и указать их, вы можете задать их с помощью массива, вы можете использовать константы, или текстовую строку. Смотрите следующие примеры:

// преобразует 0 к false
$filter = new Zend\Filter\Boolean(Zend\Filter\Boolean::INTEGER);
 
// преобразует 0 и '0' к false
$filter = new Zend\Filter\Boolean(
    Zend\Filter\Boolean::INTEGER + Zend\Filter\Boolean::ZERO
);
 
// преобразует 0 и '0' к false
$filter = new Zend\Filter\Boolean(array(
    'type' => array(
        Zend\Filter\Boolean::INTEGER,
        Zend\Filter\Boolean::ZERO,
    ),
));
 
// преобразует 0 и '0' к false
$filter = new Zend\Filter\Boolean(array(
    'type' => array(
        'integer',
        'zero',
    ),
));
 

Вы также можете передать экземпляр Zend\Config\Configдля установки желаемого типа. Для установки типа после создания экземпляра используйте метод SetType ().

 

Локализованные значения логического типа

 

Как упоминалось ранее, Zend\Filter\Boolean может также распознать локализованные строки “yes” и “no”. Это означает, что вы можете опросить ваших клиентов в форме "да" или "нет" на их родном языке и Zend\Filter\Boolean будет конвертировать ответ в соответствующее логическое значение.

 

Чтобы установить нужную локаль, вы можете использовать параметр локали или метод SetLocale().

$filter = new Zend\Filter\Boolean(array(
    'type'   => Zend\Filter\Boolean::ALL,
    'locale' => 'de',
));
// вернет false
echo $filter->filter('nein');
 
$filter->setLocale('en');
// вернет true
$filter->filter('yes');
 

Отключение приведения к типу

 

Иногда необходимо распознать только TRUE или FALSE и вернуть все другие значения не измененными. Zend\Filter\Boolean позволяет сделать это, установив параметр casting в FALSE.

 

В этом случае Zend\Filter\Boolean будет работать так, как описано в таблице ниже, которая показывает, какие значения возвращают TRUE или FALSE. Все остальные значения будут возвращены без изменения в случае, если casting установлен в FALSE.

 

Использование без приведения к типу

Тип                                                                 TRUE                                                                                                 FALSE

ZendFilterBoolean::BOOLEAN                       TRUE                                                                                                  FALSE

ZendFilterBoolean::INTEGER                          0                                                                                                          1

ZendFilterBoolean::FLOAT                             0.0                                                                                                       1.0

ZendFilterBoolean::STRING                            “”                                                               

ZendFilterBoolean::ZERO                               “0”                                                                                                        “1”

ZendFilterBoolean::EMPTY_ARRAY               array()

ZendFilterBoolean::NULL                                NULL

ZendFilterBoolean::FALSE_STRING               “false” (независимый случай)                                                     “true” (независимый случай)

ZendFilterBoolean::YES                                 локализованное “yes” (независимый случай)                        локализованное “no” (независимый случай)

 

В следующем примере показано поведение при изменении параметра casting:

$filter = new Zend\Filter\Boolean(array(
    'type'    => Zend\Filter\Boolean::ALL,
    'casting' => false,
));
 
// возвращает false
echo $filter->filter(0);
 
// возвращает true
echo $filter->filter(1);
 
// возвращает значение
echo $filter->filter(2);
 


Callback (обратный вызов)

 

Этот фильтр позволяет использовать собственные методы в сочетании с Zend\Filter. Вам не нужно создавать новый фильтр, если у вас уже есть метод, который выполняет свою задачу.

 

Поддерживаемые параметры

 

Поддерживаются следующие параметры для Zend\Filter\Callback:

 

callback (обратный вызов): устанавливает функцию обратного вызова, которая должна быть использована

options (параметры): это свойство задает параметры, которые используются при обратном вызове

 

Основы использования

 

Использовать этот фильтр довольно просто. Предположим, мы хотим создать фильтр, который переворачивает строку.

$filter = new Zend\Filter\Callback('strrev');
print $filter->filter('Hello!');
//  возвращает "!olleH"
 

Как видите, действительно просто использовать обратный вызов для определения собственного фильтра. Можно также использовать метод, который определен в классе, предоставив массив в качестве обратного вызова.

// Определение класса
class MyClass
{
    public function Reverse($param);
}
 
// Задаем фильтр
$filter = new Zend\Filter\Callback(array('MyClass', 'Reverse'));
print $filter->filter('Hello!');
 

Чтобы получить актуальную установленную функцию обратного вызова, используйте getCallback(), а для того, чтобы установить другую функцию обратного вызова, используйте setCallback().

 

Примечание

 

Возможные исключения

Следует отметить, что определение метода обратного вызова, который не может быть выполнен, бросит исключение.

 

Параметры по умолчанию для callback

 

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

$filter = new Zend\Filter\Callback(
    array(
        'callback' => 'MyMethod',
        'options'  => array('key' => 'param1', 'key2' => 'param2')
    )
);
$filter->filter(array('value' => 'Hello'));
 

Вы могли бы вызвать вышеуказанный метод вручную следующим образом:

$value = MyMethod('Hello', 'param1', 'param2');


Compress и Decompress (сжатие и декомпрессия)

 

Эти два фильтра способны сжимать и распаковывать строки, файлы и каталоги.

 

Поддерживаемые параметры

 

Поддерживаются следующие параметры для Zend\Filter\Compress и Zend\Filter\Decompress:

adapter (адаптер): адаптер сжатия, который должен быть использован. По умолчанию это Gz.

options (параметры): дополнительные параметры, которые передаются адаптеру при инициации. Каждый адаптер поддерживает свои собственные параметры.

 

Поддерживаемые адаптеры сжатия

Следующие форматы сжатия поддерживаются своим собственным адаптером:

Bz2

Gz

Lzf

Rar

Tar

Zip

 

Каждый формат сжатия имеет различные возможности, как описано ниже. Все фильтры сжатия могут быть использованы примерно одинаковым образом, и отличаются, в основном, доступными параметрами и типом сжатия, который они предлагают (оба различия обусловлены алгоритмическими особенностями, а также особенностями работы со строками сравнительно с файлами и каталогами).

 

Общее управление

 

Чтобы создать фильтр сжатия, необходимо выбрать формат сжатия, который вы хотите использовать. В следующем описании взят адаптер Bz2. Подробная информация для всех остальных адаптеров приводится после этого раздела.

 

Два фильтра, в основном, идентичны тем, что они используют одни и те же движки (бэкэнд). Zend\Filter\Compress следует использовать, если вы хотите сжать элементы, а Zend\Filter\Decompress нужно использовать, если вы хотите распаковать элементы.

 

Например, если мы хотим сжать строку, мы должны создать экземпляр Zend\Filter\Compress и указать желаемый адаптер.

$filter = new Zend\Filter\Compress('Bz2');

 

Чтобы использовать другой адаптер, просто укажите его в конструкторе.

 

Вы можете создать массив опций или объект с интерфейсом Traversable. При этом, обеспечьте, как минимум, ключ "adapter", а затем либо ключ "options", либо "adapterOptions" (который должен быть массивом параметров, обеспечивающих создание экземпляра адаптера).

$filter = new Zend\Filter\Compress(array(
    'adapter' => 'Bz2',
    'options' => array(
        'blocksize' => 8,
    ),
));
 

Примечание

 

Адаптер сжатия по умолчанию

Если адаптер сжатия не задан, то будет использоваться Gz адаптер.

 


Практически то же использование - если мы хотим распаковать строку. Мы просто должны в этом случае использовать фильтр декомпрессии.

 




$filter = new Zend\Filter\Decompress('Bz2');

Чтобы получить сжатую строку, мы должны задать исходную строку. Отфильтрованное значение является сжатой версией оригинальной строки.

$filter     = new Zend\Filter\Compress('Bz2');
$compressed = $filter->filter('Uncompressed string');
// Возвращает сжатую строку
 
Распаковка работает таким же образом.
$filter     = new Zend\Filter\Decompress('Bz2');
$compressed = $filter->filter('Compressed string');
// Возвращает распакованную строку
 

Примечание

 

Примечание к сжатию строк

Не все адаптеры поддерживают сжатие строк. Такие форматы сжатия, как Rar могут обрабатывать только файлы и каталоги. Для получения дополнительной информации обратитесь к разделу того адаптера, который вы хотите использовать.

 

Создание архива

 

Создание архива работает практически так же, как сжатие строк. Однако, в этом случае необходим дополнительный параметр, который содержит имя архива, который мы хотим создать.

$filter     = new Zend\Filter\Compress(array(
    'adapter' => 'Bz2',
    'options' => array(
        'archive' => 'filename.bz2',
    ),
));
$compressed = $filter->filter('Uncompressed string');
// Возвращает true в случае успеха и создает файла архива
 

В приведенном выше примере несжатая строка сжимается и затем записывается в заданный архивный файл

 

Примечание

 

Существующие архивы будут перезаписаны

Содержимое любого существующего файла будет перезаписано, если заданное имя файла архива уже существует.

 

Если вы хотите сжать файл, вы должны задать имя файла с путем к нему.

$filter     = new Zend\Filter\Compress(array(
    'adapter' => 'Bz2',
    'options' => array(
        'archive' => 'filename.bz2'
    ),
));
$compressed = $filter->filter('C:tempcompressme.txt');
// Возвращает true в случае успеха и создает файл архива
 

Вы также можете указать каталог, а не файл. В этом случае весь каталог со всеми файлами и подкаталогами будет сжат в архив.

$filter     = new Zend\Filter\Compress(array(
    'adapter' => 'Bz2',
    'options' => array(
        'archive' => 'filename.bz2'
    ),
));
$compressed = $filter->filter('C:\temp\somedir');
// Возвращает true в случае успеха и создает файл архива
 

Примечание

 

Не сжимайте большие или базовые каталоги.

Никогда не сжимайте большие или базовые каталоги, на подобии целого раздела. Сжатие полного раздела является ресурсоемкой задачей, и может привести к массовым проблемам на сервере при отсутствии свободного места, либо выполнение сценария займет слишком много времени.

 

Распаковка архива

 

Распаковка архива работает практически так же, как и его сжатие. Вы должны задать параметры архива или указать имя файла архива при распаковке файлов.

$filter     = new Zend\Filter\Decompress('Bz2');
$compressed = $filter->filter('filename.bz2');
// Возвращает true в случае успеха и распаковывает файл архива
 
Некоторые адаптеры поддерживают распаковку архива в другой подкаталог. В этом случае вы можете установить целевой параметр.
$filter     = new Zend\Filter\Decompress(array(
    'adapter' => 'Zip',
    'options' => array(
        'target' => 'C:\temp',
    )
));
$compressed = $filter->filter('filename.zip');
// Возвращает true в случае успеха и распаковывает архив
// в заданный целевой каталог
 

Примечание

 

Каталоги для извлечения должны существовать

Если вы хотите распаковать архив в каталог, этот каталог должен существовать.

 

Адаптер Bz2

 

Адаптер Bz2 может сжимать и распаковывать:

строки

файлы

каталоги

Этот адаптер использует расширение PHP Bz2.

 

Для настройки сжатия этот адаптер поддерживает следующие параметры:

Archive (архив): этот параметр задает файл архива, который должен быть использован или создан

Blocksize (размер блока): этот параметр устанавливает используемый размер блока. Это значение может варьироваться от 0 до 9. Значение по умолчанию - '4'.

 

Все параметры могут быть заданы при создании экземпляра или с помощью соответствующего метода. Например, соответствующими методами для "Blocksize" являются getBlocksize() и setBlocksize(). Вы можете также использовать метод setOptions(), который принимает все параметры в виде массива.

 

Адаптер Gz

 

Адаптер Gz может сжимать и распаковывать:

строки

файлы

каталоги

Этот адаптер использует расширение PHP Zlib.

 

Для настройки сжатия этот адаптер поддерживает следующие параметры:

Archive (архив): этот параметр задает файл архива, который должен быть использован или создан.

Level (уровень): это уровень используемого сжатия. Он может варьироваться от 0 до 9. Значение по умолчанию - '9'.

Mode (режим): поддерживается два режима, 'compress' и 'deflate'. Значение по умолчанию - 'compress'.

 

Все параметры могут быть заданы при создании экземпляра или с помощью соответствующего метода. Например, соответствующими методами для 'Level' являются getLevel() и setLevel(). Вы можете также использовать метод setOptions(), который принимает все параметры в виде массива.

 

Адаптер Lzf

 

Адаптер Lzf может сжимать и распаковывать:

строки

 

Примечание

 

Lzf поддерживает только строки

Адаптер Lzf не может обрабатывать файлы и каталоги.

 

Этот адаптер использует расширение PHP Lzf.

Для этого адаптера нет настраиваемых параметров.

 

Адаптер Rar

 

Адаптер Rar может сжимать и распаковывать:

файлы

каталоги

 

Примечание

 

Rar не поддерживает строки

Адаптер Rar не может обрабатывать строки

 

Этот адаптер использует расширение PHP Rar.

 

Примечание

 

Сжатие Rar не поддерживается

Из-за ограничений на формат сжатия Rar для него нет свободно распространяемых архиваторов. Если вы хотите сжать файлы в новый Rar архив, вы должны предоставить обратный вызов к адаптеру, который может вызвать Rar архиватор.

 

Для настройки сжатия этот адаптер поддерживает следующие параметры:

Archive (архив): этот параметр задает файл архива, который должен быть использован или создан.

Callback (обратный вызов): обратный вызов, который обеспечивает поддержку сжатия для этого адаптера.

Password (пароль): пароль, который используется для декомпрессии.

Target (цель): конечный объект, в который будут записаны разархивированные файлы.

 

Все параметры могут быть заданы при создании экземпляра или с помощью соответствующего метода. Например, соответствующими методами для "Target" являются getTarget() и setTarget(). Вы можете также использовать метод setOptions(), который принимает все параметры в виде массива.

 

Адаптер Tar

 

Адаптер Tar может сжимать и распаковывать:

файлы

каталоги

 

Примечание

 

Tar не поддерживает строки

Адаптер Tar не может обрабатывать строки.

 

Этот адаптер использует компонент PEAR Archive_Tar.

 

Для настройки сжатия этот адаптер поддерживает следующие параметры:

Archive (архив): этот параметр задает файл архива, который должен быть использован или создан.

Mode (режим): режим, использующийся для сжатия. Поддерживаются "NULL", что означает отсутствие сжатия, "Gz", который использует расширение PHP Zlib, и "Bz2", который использует расширение PHP Bz2. Значение по умолчанию - NULL.

Target (цель): конечный объект, в который будут записаны разархивированные файлы.

 

Все параметры могут быть заданы при создании экземпляра или с помощью соответствующего метода. Например, соответствующими методами для "Target" являются getTarget() и setTarget(). Вы можете также использовать метод setOptions(), который принимает все параметры в виде массива.

 

Примечание

 

Использование каталогов

При сжатии каталогов с помощью Tar используется полный путь к файлу. Это означает, что для создания Tar файла не достаточно только подкаталога, а нужен полный путь к сжатому файлу.

 

Адаптер Zip

 

Адаптер Zip может сжимать и распаковывать:

строки

файлы

каталоги

 

Примечание

 

Zip не поддерживает распаковку строк

Адаптер Zip не может выполнить распаковку в строку; декомпрессия всегда будет записана в файл.

 

Этот адаптер использует расширение PHP Zip.

 

Для настройки сжатия этот адаптер поддерживает следующие параметры:

Archive (архив): этот параметр задает файл архива, который должен быть использован или создан.

Target (цель): конечный объект, в который будут записаны разархивированные файлы.

 

 

 

 


Digits (цифры)

 

Возвращает строку $value, удаляя все, кроме цифр.

 

Поддерживаемые параметры

 

Для Zend\Filter\Digits нет поддерживаемых параметров.

 

Основы использования

 

Простой пример использования приведен ниже:

$filter = new Zend\Filter\Digits();
print $filter->filter('October 2012');
 
//Вернет "2012".
 
$filter = new Zend\Filter\Digits();
print $filter->filter('HTML 5 for Dummies');
 
//Вернет "5".
 


Dir

Для заданной строки, содержащей путь к файлу, этот фильтр вернет имя каталога.

 

Поддерживаемые параметры

 

Для Zend\Filter\Dir нет поддерживаемых параметров.

 

Основы использования

 

Простой пример использования приведен ниже:

$filter = new Zend\Filter\Dir();
print $filter->filter('/etc/passwd');
 
//Вернет "/etc".
 
$filter = new Zend\Filter\Dir();
print $filter->filter('C:/Temp/x');
 
//Вернет "C:/Temp".
 

Encrypt and Decrypt (шифрование и расшифровка)

 

Эти фильтры позволяют шифровать и дешифровать любую заданную строку. Для этого они используют адаптеры. Реально существуют адаптеры класса Zend\Crypt\BlockCipher (блочного шифрования) и расширение PHP OpenSSL.

 

Поддерживаемые параметры

 

Для Zend\Filter\Encrypt и Zend\Filter\Decrypt поддерживаются следующие параметры:

adapter (адаптер): этот параметр устанавливает адаптер шифрования, который должен быть использован.

algorithm (алгоритм): только для BlockCipher. Алгоритм, который должен быть использован адаптером Zend\Crypt\Symmetric\Mcrypt. Это должен быть один из алгоритмов шифрования, поддерживаемый классом Zend\Crypt\Symmetric\Mcrypt (смотрите метод getSupportedAlgorithms()). Если алгоритм не установлен, используется aes, Advanced Encryption Standard (смотрите Zend\Crypt\BlockCipher для более детальной информации).

compression (сжатие): если зашифрованные значения должны быть сжаты. По умолчанию - без сжатия.

envelope (конверт) : только для OpenSSl. Зашифрованный ключ конверта для пользователя, зашифровавшего содержимое. Вы можете указать путь и имя файла ключа, или просто непосредственно содержимое файла ключа. Если установлен параметр package, вы можете пропустить этот параметр.

key (ключ): только для BlockCipher. Ключ шифрования, которым будут зашифрованы исходные данные. Вам необходим тот же самый ключ и для расшифровки.

mode (режим): только для BlockCipher. Режим шифрования, который должен быть использован. Это должен быть один из режимов, которые находятся в каталоге "PHP-mcrypt режимы". Если параметр не установлен, то по умолчанию это "cbc".

mode_directory (каталог режима): только для BlockCipher. Каталог, в котором находится режим. Если этот параметр не установлен, то по умолчанию путь к каталогу задан в расширении Mcrypt.

package (пакет): только для OpenSSl. Должен ли ключ конверта быть упакован с зашифрованным значением. По умолчанию - FALSE.

private (приватный ключ): только для OpenSSl. Ваш приватный ключ, который будет использован для расшифровки содержимого. Также приватным ключом может быть либо имя файла и путь к файлу ключа, либо просто непосредственно содержимое ключа.

public (публичный ключ): только для OpenSSl. Публичный ключ пользователя, которого вы хотите обеспечить зашифрованной информацией. Вы можете задать несколько публичных ключей в виде массива. Вы можете либо указать путь и имя файла ключа, либо просто непосредственно содержимое ключа.

vector (вектор): только для BlockCipher. Вектор инициализации, который будет использован. Если он не установлен, вектор будет случайным.

 

Использование адаптера

// Использование адаптера BlockCipher
$filter1 = new Zend\Filter\Encrypt(array('adapter' => 'BlockCipher'));
 
// Использование адаптера OpenSSL
$filter2 = new Zend\Filter\Encrypt(array('adapter' => 'openssl'));
 

Чтобы установить другой адаптер, вы можете использовать setAdapter(), и метод getAdapter() для того, чтобы получить фактически установленный адаптер.

// Использование адаптера OpenSSL
$filter = new Zend\Filter\Encrypt();
$filter->setAdapter('openssl');
 

Примечание

 

Если вы не предоставите параметр adapter или не используете setAdapter(), то по умолчанию будет использован адаптер BlockCipher.

 

Шифрование с использованием BlockCipher

 

Чтобы шифровать строку с использованием BlockCipher, вы должны указать ключ шифрования с помощью метода setKey() либо передать его в конструктор.

// Использование алгоритма шифрования по умолчанию AES
$filter = new Zend\Filter\Encrypt(array('adapter' => 'BlockCipher'));
$filter->setKey('encryption key');
// или
// $filter = new Zend\Filter\Encrypt(array(
//     'adapter' => 'BlockCipher',
//     'key'     => 'encryption key'
// ));
$encrypted = $filter->filter('text to be encrypted');
printf ("Encrypted text: %sn", $encrypted);
 

Вы можете получать и устанавливать шифрованные значения и позднее, методами getEncryption() и setEncryption().

// Использование алоритма шифрования по умолчанию AES
$filter = new Zend\Filter\Encrypt(array('adapter' => 'BlockCipher'));
$filter->setKey('encryption key');
var_dump($filter->getEncryption());
// Будет печатать:
//array(4) {
//  ["key_iteration"]=>
//  int(5000)
//  ["algorithm"]=>
//  string(3) "aes"
//  ["hash"]=>
//  string(6) "sha256"
//  ["key"]=>
//  string(14) "encryption key"
//}
 

Примечание

 

Адаптер BlockCipher использует по умолчанию расширение PHP Mcrypt. Это значит, что вы должны установить модуль Mcrypt в вашем PHP окружении.

 

Если вы не указали вектор инициализации (salt и IV), BlockCipher будет генерировать случайные значения во время каждого шифрования. Если вы попытаетесь выполнить следующий код, выходные данные всегда будут разными (обратите внимание, что даже в том случае, если выходные данные всегда отличаются, вы можете расшифровать их, используя тот же ключ).
$key  = 'encryption key';
$text = 'message to encrypt';
// Используется адаптер по умолчанию BlockCipher
$filter = new \Zend\Filter\Encrypt();
$filter->setKey('encryption key');
for ($i=0; $i < 10; $i++) {
   printf("%d) %sn", $i, $filter->filter($text));
}
 

Если вы хотите получать одинаковый результат, используйте метод setVector(). Этот сценарий всегда будет производить одинаковые результаты шифрования.

// Используется адаптер по умолчанию BlockCipher
$filter = new \Zend\Filter\Encrypt();
$filter->setKey('encryption key');
$filter->setVector('12345678901234567890');
printf("%sn", $filter->filter('message'));
// на выходе:
// 04636a6cb8276fad0787a2e187803b6557f77825d5ca6ed4392be702b9754bb3MTIzNDU2Nzg5MDEyMzQ1NgZ+zPwTGpV6gQqPKECinig=
 

Примечание

 

Из соображений безопасности всегда лучше использовать различный вектор для каждого шифрования. Мы рекомендуем использовать метод setVector() только в случае, если это действительно необходимо.

 

Расшифровка с использованием BlockCipher

 

Для расшифровки информации, которая была зашифрована с использованием  BlockCipher, вы должны знать параметры, с которыми было выполнено шифрование.

 

Если вы использовали только ключ шифрования, вы можете просто использовать его для расшифровки информации. Как скоро вы предоставите все параметры, расшифровка становится такой же простой, как и шифрование.

$content = '04636a6cb8276fad0787a2e187803b6557f77825d5ca6ed4392be702b9754bb3MTIzNDU2Nzg5MDEyMzQ1NgZ+zPwTGpV6gQqPKECinig=';
// Используется адаптер по умолчанию BlockCipher
$filter = new Zend\Filter\Decrypt();
$filter->setKey('encryption key');
printf("Decrypt: %sn", $filter->filter($content));
// на выходе:
// Decrypt: message
 

Обратите внимание, что даже если мы не указали тот же вектор, BlockCipher в состоянии расшифровать сообщение, потому, что вектор сохраняется в зашифрованной строке. (Заметим, что вектор может храниться в открытом виде, это не секрет, что вектор используется только для улучшения стойкости алгоритма шифрования).

 

Примечание

 

Необходимо также отметить, что все настройки будут проверяться при создании экземпляра фильтра или при вызове метода setEncryption().

 

Шифрование с помощью OpenSSL

 

Если у вас установлено расширение OpenSSL, вы можете использовать адаптер OpenSSL. Затем, вы можете получить или установить публичные ключи методами getPublicKey() и setPublicKey(). Приватный ключ также можно получить и установить методами getPrivateKey() и setPrivateKey() соответственно.

// Использование OpenSSL и обеспечение приватного ключа
$filter = new Zend\Filter\Encrypt(array(
   'adapter' => 'openssl',
   'private' => '/path/to/mykey/private.pem'
));
// конечно, вы можете задать публичные ключи при инициализации
$filter->setPublicKey(array(
   '/public/key/path/first.pem',
   '/public/key/path/second.pem'
));
 

Примечание

 

Отметим, что OpenSSL не будет работать, если вы не предоставите валидных ключей.

 

Если вы, также, захотите зашифровать ключи, вы должны предоставить секретную фразу с помощью метода setPassphrase(). Если вы хотите расшифровать информацию, которая была зашифрована с помощью секретной фразы, вам нужны будут не только публичный ключ, но и секретная фраза для расшифровки ключа.

// Использование OpenSSL и обеспечение приватного ключа
$filter = new Zend\Filter\Encrypt(array(
   'adapter' => 'openssl',
   'private' => '/path/to/mykey/private.pem'
));
// конечно, вы можете задать публичные ключи при инициализации
$filter->setPublicKey(array(
   '/public/key/path/first.pem',
   '/public/key/path/second.pem'
));
$filter->setPassphrase('mypassphrase');
 

И наконец, при использовании OpenSSL, вы должны задать приемник для шифрованной информации, предоставленную секретную фразу, и конверт для расшифровки.

 

Для вас это означает, что вы можете получить ключи конверта после того, как зашифруете информацию, методом getEnvelopeKey().

 

Таким образом, наш полный пример для шифрования информации с помощью OpenSSL будет выглядеть следующим образом:

// Использование OpenSSL и обеспечение приватного ключа
$filter = new Zend\Filter\Encrypt(array(
   'adapter' => 'openssl',
   'private' => '/path/to/mykey/private.pem'
));
// конечно, вы можете задать публичные ключи при инициализации
$filter->setPublicKey(array(
   '/public/key/path/first.pem',
   '/public/key/path/second.pem'
));
$filter->setPassphrase('mypassphrase');
$encrypted = $filter->filter('text_to_be_encoded');
$envelope  = $filter->getEnvelopeKey();
print $encrypted;
// Для расшифровки используйте фильтр Decrypt
 

Упрощенное использование OpenSSL

 

Как говорилось ранее, вам нужно получить ключ конверта, чтобы можно было расшифровать ранее зашифрованное значение. Это может сильно раздражать, если вы работаете с несколькими значениями.

Чтобы задать упрощенное использование, установите параметр package в TRUE. Значение по умолчанию - FALSE.

// Использование OpenSSL и обеспечение приватного ключа
$filter = new Zend\Filter\Encrypt(array(
   'adapter' => 'openssl',
   'private' => '/path/to/mykey/private.pem',
   'public'  => '/public/key/path/public.pem',
   'package' => true
));
$encrypted = $filter->filter('text_to_be_encoded');
print $encrypted;
// Для расшифровки используйте фильтр Decrypt
 

Теперь возвращаемое значение содержит зашифрованную информацию и конверт. Вам не нужно получать их после сжатия. Негативный аспект этой возможности в том, что зашифрованное значение можно будет расшифровать теперь только с помощью Zend\Filter\Encrypt.

 

Сжатие информации

 

По сравнению с исходным значением, зашифрованное значение может быть очень большой строкой. Чтобы уменьшить значение, Zend\Filter\Encrypt позволяет использовать сжатие.

 

Параметр сжатия может быть установлен по имени адаптера сжатия, либо массивом, который устанавливает все желаемые параметры для адаптера сжатия.

// Использование основного адаптера сжатия
$filter1 = new Zend\Filter\Encrypt(array(
   'adapter'     => 'openssl',
   'private'     => '/path/to/mykey/private.pem',
   'public'      => '/public/key/path/public.pem',
   'package'     => true,
   'compression' => 'bz2'
));
// Использование основного адаптера сжатия
$filter2 = new Zend\Filter\Encrypt(array(
   'adapter'     => 'openssl',
   'private'     => '/path/to/mykey/private.pem',
   'public'      => '/public/key/path/public.pem',
   'package'     => true,
   'compression' => array('adapter' => 'zip', 'target' => 'usrtmptmp.zip')
));
 

Примечание

 

Расшифровка с такими же настройками

Если вы хотите расшифровать значение, которое дополнительно сжато, то вам необходимо установить те же параметры сжатия для расшифровки, что и для шифрования. В противном случае, расшифровка не удастся.

 

Расшифровка с помощью OpenSSL

 

Расшифровка с помощью OpenSSL так же проста, как и шифрование. Но вы должны иметь все необходимые данные от лица, которое шифровало информацию. Смотрите следующий пример:

// Использование OpenSSL и обеспечение приватного ключа
$filter = new Zend\Filter\Decrypt(array(
   'adapter' => 'openssl',
   'private' => '/path/to/mykey/private.pem'
));
// конечно, вы можете задать ключ конверта при инициализации
$filter->setEnvelopeKey(array(
   '/key/from/encoder/first.pem',
   '/key/from/encoder/second.pem'
));
 

Примечание

 

Заметим, что адаптер OpenSSL не будет работать, если вы не предоставите валидных ключей.

 

Дополнительно может понадобиться предоставить секретную фразу для расшифровки самих ключей с помощью метода setPassphrase().

// Использование OpenSSL и обеспечение приватного ключа
$filter = new Zend\Filter\Decrypt(array(
   'adapter' => 'openssl',
   'private' => '/path/to/mykey/private.pem'
));
// конечно, вы можете задать ключ конверта при инициализации
$filter->setEnvelopeKey(array(
   '/key/from/encoder/first.pem',
   '/key/from/encoder/second.pem'
));
$filter->setPassphrase('mypassphrase');
 

И, наконец, расшифруем информацию. Наш полный пример для дешифрования ранее зашифрованной информации будет выглядит следующим образом:

// Использование OpenSSL и обеспечение приватного ключа
$filter = new Zend\Filter\Decrypt(array(
   'adapter' => 'openssl',
   'private' => '/path/to/mykey/private.pem'
));
// конечно, вы можете задать ключ конверта при инициализации
$filter->setEnvelopeKey(array(
   '/key/from/encoder/first.pem',
   '/key/from/encoder/second.pem'
));
$filter->setPassphrase('mypassphrase');
$decrypted = $filter->filter('encoded_text_normally_unreadable');
print $decrypted;
 


HtmlEntities (Html сущности)

 

Возвращает строку $value, с символами, преобразованными в соответствующие эквиваленты Html сушностей, при наличии оных.

 

Поддерживаемые параметры

 

Поддерживаются следующие параметры для Zend\Filter\HtmlEntities:

quotestyle (стиль кавычек): эквивалент параметра quote_style нативной функции PHP htmlentities. Позволяет задать, как будут обрабатываться ‘одинарные’ and “двойные” кавычки. Допускаются следующие константы: ENT_COMPAT, ENT_QUOTES, ENT_NOQUOTES, значение по умолчанию - ENT_COMPAT.

charset (кодировка): эквивалент параметра charset нативной функции PHP htmlentities. Определяет набор символов, который будет использоваться при фильтрации. В отличии от нативной функции PHP кодировка по умолчанию - "UTF-8" (Начиная с версии php 5.4.0 нативная функция имеет те же умолчания для кодировки - прим. переводчика). Смотрите http://php.net/htmlentities для получения списка поддерживаемых кодировок.

 

Примечание

 

Эта опция может быть установлена с помощью параметра $options в виде объекта с интерфейсом Traversable или массива. Ключ опции должен быть указан, как "charset" или "encoding".

doublequote (двойное цитирование): эквивалент параметра double_encode нативной PHP функции htmlentities. Если установлено в false, существующие Html сущности не будут преобразованы. Значение по умолчанию - всегда преобразовывать (true).

 

Примечание

 

Эта опция должна быть установлена с помощью параметра $options или метода setDoubleEncode().

 

Основы использования

 

Смотрите следуюющий пример поведения фильтра по умолчанию.

$filter = new Zend\Filter\HtmlEntities();
print $filter->filter('<');
 

Zend\Filter\HtmlEntities позволяет изменять используемый стиль кавычек. Это полезно, если вы хотите оставить двойные, одинарные, либо оба типа кавычек не
отфильтрованными. Смотрите следующий пример:

$filter = new Zend\Filter\HtmlEntities(array('quotestyle' => ENT_QUOTES));
$input  = "A 'single' and " . '"double"';
print $filter->filter($input);
 

Приведенный выше пример возвращает ‘single’ и “double”. Обратите внимание, что ‘одиночные’, как и “двойные” кавычки фильтруются.

$filter = new Zend\FilterHtmlEntities(array('quotestyle' => ENT_NOQUOTES));
$input  = "A 'single' and " . '"double"';
print $filter->filter($input);
 

Приведенный выше пример возвращает 'single' и "double". Обратите внимание, что ни двойные, ни одинарные кавычки не меняются.

 

Вспомогательные методы

 

Чтобы изменить или получить параметр quotestyle после создания экземпляра, используются методы setQuoteStyle() и getQuoteStyle() соответственно. Метод setQuoteStyle()  принимает один параметр, $quoteStyle. Допускаются следующие константы: ENT_COMPAT, ENT_QUOTES, ENT_NOQUOTES.

$filter = new Zend\Filter\HtmlEntities();
$filter->setQuoteStyle(ENT_QUOTES);
print $filter->getQuoteStyle(ENT_QUOTES);
 

Чтобы изменить или получить кодировку после создания экземпляра, используются методы setCharSet() и getCharSet() соответственно. Метод setCharSet() принимает один параметр, $charSet. Смотрите http://php.net/htmlentities для получения списка поддерживаемых кодировок.

$filter = new Zend\Filter\HtmlEntities();
$filter->setQuoteStyle(ENT_QUOTES);
print $filter->getQuoteStyle(ENT_QUOTES);
 

Для изменения или получения параметра doublequote после создания экземпляра, используются методы setDoubleQuote() и getDoubleQuote() соответственно. Метод setDoubleQuote() принимает один параметр логического типа $doubleQuote.

$filter = new Zend\Filter\HtmlEntities();
$filter->setQuoteStyle(ENT_QUOTES);
print $filter->getQuoteStyle(ENT_QUOTES);
 

Int (целое)

 

Zend\Filter\Int  позволяет преобразовать содержащееся скалярное значение в целое.

 

Поддерживаемые параметры

 

Для Zend\Filter\Int нет поддерживаемых параметров.

 

Основы использования

 

Простой пример использования приведен ниже:

$filter = new Zend\Filter\Int();
print $filter->filter('-4 is less than 0');
 
//Вернет ‘-4’.
 


Null (нуль)

 

Этот фильтр изменяет заданные исходные данные на NULL, если те отвечают определенным критериям. Это может понадобиться при работе с базами данных, если вы хотите получить NULL вместо значения логического или к-л другого типа.

 

Поддерживаемые параметры

 

Поддерживаемые параметры для Zend\Filter\Null:

type (тип переменной): поддерживаемый тип переменной

 

Поведение по умолчанию

 

По умолчанию этот фильтр работает, как функция PHP empty(); иными словами, если empty() вернет логическое TRUE, то будет возвращен NULL.

$filter = new Zend\FilterNull();
$value  = '';
$result = $filter->filter($value);
// вернет NULL для пустой строки
 

Это означает, что без задания конкретной конфигурации фильтр Zend\Filter\Null принимает все исходные типы данных и возвращает NULL в тех же случаях, что и empty().

 

Любые другие значения будут возвращены как есть, без изменений.

 

Изменение поведения по умолчанию

 

Иногда фильтрации на базе empty() может быть недостаточно. Для таких случаев Zend\Filter\Null позволяет настроить, какой тип будет преобразован, а какой нет.

Следующие типы могут быть обработаны:

boolean (логический тип): преобразует логическое FALSE в NULL.

integer (целое): преобразует целое 0 в NULL.

empty_array (пустой массив): преобразует пустой массив в NULL.

float (): преобразует число с плавающей запятой 0.0 в NULL.

string (строка): преобразует пустую строку '' в NULL.

zero (нуль): преобразует строку, содержащую единственный символ ноль ('0') в NULL.

all (все): преобразует все указанные выше типы в NULL (это поведение по умолчанию).

 

Есть несколько способов указать, какие из перечисленных выше типов будут отфильтрованы. Вы можете задать один или несколько типов, и добавить их, вы можете задать массив, можете использовать константы, или можете задать текстовую строку. Смотрите следующие примеры:

// преобразует false в null
$filter = new Zend\FilterNull(Zend\Filter\Null::BOOLEAN);
 
// преобразует false и 0 в null
$filter = new Zend\FilterNull(
    Zend\Filter\Null::BOOLEAN + Zend\Filter\Null::INTEGER
);
// преобразует false и 0 в null
$filter = new Zend\FilterNull( array(
    Zend\Filter\Null::BOOLEAN,
    Zend\Filter\Null::INTEGER
));
// преобразует false и 0 в null
$filter = new Zend\Filter\Null(array(
    'boolean',
    'integer',
));
 

Вы  можете задать объект с интерфейсом Traversable или массив для установки желаемого типа. Чтобы задать типы в последствии, используйте setType().

 

 

 

 

NumberFormat (форматирование чисел)

 

Фильтр NumberFormat используется, чтобы возвращать числа с учетом специфики локали и процентные строки. Он выступает в качестве обертки для класса NumberFormatter из расширения интернационализации (Intl).

 

Поддерживаемые параметры для фильтра NumberFormat

 

Следующие параметры поддерживаются для фильтра NumberFormat:

NumberFormat([ string $locale [, int $style [, int $type ]]])

$locale (локаль): необязательный параметр. Локаль, с учетом которой число будет отформатировано (имя локали, например, en_US). Если параметр не установлен, будет использована локаль по умолчанию (Locale::getDefault()).

 Также доступны методы для получения / установки локали: getLocale() и setLocale()

$style (стиль): необязательный параметр. Стиль форматирования, заданный одной из констант форматирования стиля. Если параметр не установлен, будет использован NumberFormatter::DEFAULT_STYLE как стиль по умолчанию.

 Также доступны методы для получения / установки стиля: getStyle() и setStyle().

$type (тип): необязательный параметр. Тип форматирования, который будет использован. Если параметр не установлен, будет использован NumberFormatter::TYPE_DOUBLE как тип по умолчанию.

 Также доступны методы для получения / установки типа: getType() и setType().

 

Использование фильтра NumberFormat

$filter = new \Zend\I18n\Filter\NumberFormat("de_DE");
echo $filter->filter(1234567.8912346);
// Вернет "1.234.567,891"
$filter = new \Zend\I18n\Filter\NumberFormat("en_US", NumberFormatter::PERCENT);
echo $filter->filter(0.80);
// Вернет "80%"
$filter = new \Zend\I18n\Filter\NumberFormat("fr_FR", NumberFormatter::SCIENTIFIC);
echo $filter->filter(0.00123456789);
// Вернет "1,23456789E-3"
 

PregReplace (замена по регулярному выражению)

 

Zend\Filter\PregReplace выполняет поиск по регулярному выражению и замену всех найденных элементов.

 

Поддерживаемые параметры

 

Для Zend\Filter\PregReplace поддерживаются следующие параметры:

•  pattern (шаблон): шаблон для поиска

replacement (замена): строка, которая используется в качестве замены для найденых совпадений.

 

Основы использования

 

Чтобы использовать этот фильтр правильно, вы должны задать два параметра:

Параметр pattern должен быть задан, чтобы установить шаблон, по которому будет производиться поиск. Это может быть одна строка для одного шаблона, или массив строк для нескольких шаблонов.

 

Чтобы установить шаблон, который будет использоваться в качестве замены, необходимо использовать параметр replacement. Это может быть строка для одного шаблона, или массив строк для нескольких шаблонов.

$filter = new Zend\Filter\PregReplace(array(
    'pattern'     => '/bob/',
    'replacement' => 'john',
));
$input  = 'Hy bob!";
$filter->filter($input);
// вернет 'Hy john!'

Вы можете использовать getPattern() и setPattern() для последующей установки шаблона поиска. Для установки шаблона замены можно использовать getReplacement() и setReplacement().

$filter = new Zend\Filter\PregReplace();
$filter->setMatchPattern(array('bob', 'Hy'))
      ->setReplacement(array('john', 'Bye'));
$input  = 'Hy bob!";
$filter->filter($input);
// вернет 'Bye john!'

Для более сложных вариантов использования обратитесь к главе PHP PCRE Pattern.

 

 

 

 


RealPath (абсолютный путь)

 

Этот фильтр разрешает заданные ссылки и пути и возвращает канонизированные абсолютные пути.

 

Поддерживаемые параметры

 

Для Zend\Filter\RealPath доступны следующие параметры:

exists (существование): при значении этого параметра по умолчанию, TRUE, проверяет, действительно ли реально существует заданный путь.

 

Основы использования

 

Для любой заданной ссылки на путь в файловой системе будет возвращен абсолютный путь. Ссылки вида '/./', '/../', а также символы '/' в исходном пути будут удалены. Результирующий путь не будет содержать символических ссылок, символов '/./' или '/../'.

Zend\Filter\RealPath вернет false при возникновении ошибки, например, если файл не существует. В BSD системах Zend\Filter\RealPath не сработает, если последний компонент пути не существует, тогда, как в других системах вернет FALSE.

$filter = new Zend\Filter\RealPath();
$path   = '/www/var/path/../../mypath';
$filtered = $filter->filter($path);
// вернет '/www/mypath'
 

Несуществующие пути

 

Иногда необходимо получить несуществующие пути, например, если вы хотите получить абсолютный путь для пути, который вы хотите создать. Вы можете задать FALSE при создании экземпляра или использовать для этого setExists().

$filter = new Zend\FilterRealPath(false);
$path   = '/www/var/path/../../non/existing/path';
$filtered = $filter->filter($path);
// вернет '/www/non/existing/path'
// даже если file_exists или realpath вернут false
 

StringToLower (нижнийрегистр)

 

Этот фильтр преобразует любые исходные данные в нижний регистр.

 

Поддерживаемые параметры

 

Поддерживаются следующие параметры для Zend\Filter\StringToLower:

encoding (кодировка): этот параметр может быть использован для установки используемой кодировки.

 

Основы использования

 

Вот простой пример:

$filter = new Zend\Filter\StringToLower();
print $filter->filter('SAMPLE');
// вернет "sample"
 

Строки с различной кодировкой

 

По умолчанию фильтр работает только с символами, принадлежащими фактической локали вашего сервера. Символы других кодировок будут игнорироваться. Тем не менее, возможно привести их к нижнему регистру, если расширение mbstring доступно в вашем окружении. Просто установите желаемую кодировку при создании экземпляра фильтра StringToLower. Или используйте метод setEncoding(), чтобы изменить кодировку впоследствии.

// использование UTF-8
$filter = new Zend\Filter\StringToLower('UTF-8');
// или задание массива, который может применяться при использовании конфигурации
$filter = new Zend\Filter\StringToLower(array('encoding' => 'UTF-8'));
// или сделать это позднее
$filter->setEncoding('ISO-8859-1');
 

Примечание

 

Установка неправильной кодировки

Помните, что вы получите исключение, если вы хотите установить кодировку и расширение mbstring недоступно в вашем окружении.

 

Кроме того, если вы попытаетесь установить кодировку, которая не поддерживается вашим расширением mbstring, вы также получите исключение.

 

 

 

 

StringToUpper (верхний регистр)

 

Этот фильтр преобразует любые исходные данные в верхний регистр.

 

Поддерживаемые параметры

 

Для Zend\Filter\StringToUpper поддерживаются следующие параметры:

encoding (кодировка): этот параметр может быть использован для установки используемой кодировки.

 

Основы использования

 

Вот простой пример использования фильтра StringToUpper:

$filter = new Zend\Filter\StringToUpper();
print $filter->filter('Sample');
// вернет "SAMPLE"
 

Строки с различной кодировкой

 

Как и фильтр StringToLower, этот фильтр обрабатывает только символы, принадлежащие фактической локали вашего сервера. Работа с использованием различных кодировок происходит так же, как и для StringToLower.

$filter = new Zend\Filter\StringToUpper(array('encoding' => 'UTF-8'));
// или сделать это позднее
$filter->setEncoding('ISO-8859-1');
 

StringTrim (триммирование строк)

 

Этот фильтр изменяет заданную строку таким образом, что определенные символы будут удалены в начале и конце строки.

 

Поддерживаемые параметры

 

Для Zend\Filter\StringTrim поддерживаются следующие параметры:

charlist (список символов): список символов для удаления с начала и конца строки. Если он не установлен, или равен null, будет выполнено поведение по умолчанию, которое заключается в удалении пробелов в начале и конце строки.

 

Основы использования

 

Простой пример использования:

$filter = new Zend\Filter\StringTrim();
print $filter->filter(' This is (my) content: ');
 

Приведенный выше пример возвращает 'This is (my) content:'. Обратите внимание, что символы пробела были удалены.

 

Поведение по умолчанию

$filter = new Zend\Filter\StringTrim(':');
// or new ZendFilterStringTrim(array('charlist' => ':'));
print $filter->filter(' This is (my) content:');
 

Приведенный выше пример возвращает 'This is (my) content'. Обратите внимание, что пробелы и двоеточие были удалены. Вы можете предоставить объект с интерфейсом Traversable или массив с ключом 'charlist'. Чтобы установить нужный список символов после создания экземпляра, используйте метод setCharList(). Метод setCharList() возвращает установленный список символов.

 

 

 

 


StripNewLines (удаление символов новой строки)

 

Этот фильтр изменяет заданную строку и удаляет из этой строки символы новой строки.

 

Поддерживаемые параметры

 

Для Zend\Filter\StripNewLines нет поддерживаемых параметров.

 

Основы использования

 

Простой пример использования:

$filter = new Zend\Filter\StripNewLines();
print $filter->filter(' This is (my)``nr``content: ');
 
 

Приведенный выше пример возвращает 'This is (my) content:'. Обратите внимание, что все символы новой строки были удалены.

 

 

 

 


StripTags (удаление тегов)

 

Этот фильтр удаляет XML и HTML теги из заданного содержимого.

 

Предупреждение

 

Имейте в виду, что Zend\Filter\StripTags может использоваться исключительно для удаления всех доступных тегов.

 

Использование Zend\Filter\StripTags для того, чтобы сделать ваш сайт безопасным путем удаления некоторых нежелательных тегов, приведет к уязвимому и опасному коду.

 

Zend\Filter\StripTags не должен быть использован для предотвращения XSS атак. Этот фильтр не яляется заменой для Tidy или HtmlPurifier.

 

Поддерживаемые параметры

 

Для Zend\Filter\StripTags поддерживаются следующие параметры

allowAttribs (разрешить аттрибуты): этот параметр устанавливает атрибуты, которые допускаются. Все остальные атрибуты удаляются из заданного содержимого.

allowTags (разрешить теги): этот параметр устанавливает теги, которые допускаются. Все остальные теги будут удалены из заданного содержимого.

 

Основы использования

 

Смотрите следующие примеры поведения по умолчанию для данного фильтра:

$filter = new Zend\Filter\StripTags();
print $filter->filter('<B>My content</B>');
 

В результате вы получите очищенное содержимое 'My content'.

 

Если в содержимом присутствуют поврежденные или неполные теги, то последующее содержимое будет удалено. Смотритеследующийпример:

$filter = new Zend\Filter\StripTags();
print $filter->filter('This contains <a href="http://example.com">no ending tag');
 

Пример выше вернет 'This contains', остальное будет удалено.

 

Разрешить определенные теги

 

Zend\Filter\StripTags позволяет удалить все, кроме определенных тегов. Это позволяет, например, удалить все теги в тексте, кроме ссылок.

$filter = new Zend\Filter\StripTags(array('allowTags' => 'a'));
$input  = "A text with <br/> a <a href='link.com'>link</a>";
print $filter->filter($input);
 

Пример выше вернет в результате 'A text with a <a href=’link.com’>link</a>'. Здесь удаляются все теги, кроме ссылок. Предоставляя массив, можно задать несколько тегов одновременно.

 

Предупреждение

 

Не используйте эту возможность, чтобы получить наверняка защищенный контент. Этот компонент не заменяет использование надлежаще настроенного HTML фильтра.

 

Разрешить определенные атрибуты

 

Кроме того, существует возможность удалить все атрибуты, кроме разрешенных из тега.

$filter = new Zend\Filter\StripTags(array('allowAttribs' => 'src'));
$input  = "A text with <br/> a <img src='picture.com' width='100'>picture</img>";
print $filter->filter($input);
 

Пример выше будет возвращать в результате 'Atextwitha <imgsrc=’picture.com’>picture</img>'. Из тега img будут удалены все атрибуты, кроме src. Предоставляя массив, вы можете задать несколько атрибутов одновременно.