Zend Framework incluye un conjunto estándar de filtros, listos para que los uses.
Zend_Filter_Alnum es un filtro que devuelve únicamente caracteres
alfabéticos y dígitos. Todos los demás caracteres son suprimidos.
Las siguientes opciones son soportadas para Zend_Filter_Alnum:
allowwhitespace: Si esta opción se establece, entonces se permiten los caracteres de espacio en blanco. En caso contrario, son suprimidos. Por defecto los espacios en blanco no están permitidos.
Vea el siguiente ejemplo del comportamiento por defecto de este filtro.
$filter = new Zend_Filter_Alnum();
$return = $filter->filter('This is (my) content: 123');
// returns 'Thisismycontent123'
El ejemplo anterior devuelve 'Thisismycontent123'. Como puede ver, todos los espacios en blanco y también los paréntesis son filtrados.
![]() |
Nota |
|---|---|
|
Zend_Filter_Alnum también puede permitir espacios en blanco. Esto puede ser útil
cuando desea eliminar caracteres especiales de un texto. Vea el siguiente ejemplo:
$filter = new Zend_Filter_Alnum(array('allowwhitespace' => true));
$return = $filter->filter('This is (my) content: 123');
// returns 'This is my content 123'
El ejemplo anterior devuelve 'This is my content 123'. Como puede ver, solo se filtran los paréntesis, mientras que los espacios en blanco no se ven afectados.
Para cambiar allowWhiteSpace posteriormente puede usar
setAllowWhiteSpace() y
getAllowWhiteSpace().
Zend_Filter_Alpha es un filtro que devuelve la cadena
$value, eliminando todo excepto los caracteres alfabéticos. Este filtro incluye una
opción para permitir también caracteres de espacio en blanco.
Las siguientes opciones son soportadas para Zend_Filter_Alpha:
allowwhitespace: Si esta opción se establece, entonces se permiten los caracteres de espacio en blanco. En caso contrario, son suprimidos. Por defecto los caracteres de espacio en blanco no están permitidos.
A continuación se muestra un ejemplo básico de uso:
$filter = new Zend_Filter_Alpha();
print $filter->filter('This is (my) content: 123');
El ejemplo anterior devuelve 'Thisismycontent'. Observe que los caracteres de espacio en blanco y los paréntesis se eliminan.
![]() |
Nota |
|---|---|
|
Zend_Filter_Alpha también puede permitir caracteres de espacio en blanco. Esto puede
ser útil cuando desea eliminar caracteres especiales de una cadena. Vea el siguiente
ejemplo:
$filter = new Zend_Filter_Alpha(array('allowwhitespace' => true));
print $filter->filter('This is (my) content: 123');
El ejemplo anterior devuelve 'This is my content '. Observe que los paréntesis, los dos puntos y los números han sido eliminados, mientras que los caracteres de espacio en blanco permanecen.
Para cambiar allowWhiteSpace después de la instanciación puede usarse el método
setAllowWhiteSpace().
Para consultar el valor actual de allowWhiteSpace puede usarse el método
getAllowWhiteSpace().
Zend_Filter_BaseName permite filtrar una cadena que contiene
la ruta a un archivo, y devolverá el nombre base de ese archivo.
No hay opciones adicionales para Zend_Filter_BaseName.
Este filtro convierte una entrada dada en un valor BOOLEAN. Esto suele ser
útil cuando se trabaja con bases de datos o al procesar valores de formularios.
Las siguientes opciones son soportadas para Zend_Filter_Boolean:
casting: Cuando esta opción se establece en
TRUEcualquier entrada dada será convertida a booleano. Esta opción por defecto esTRUE.locale: Esta opción establece el idioma que se usará para detectar entradas localizadas.
type: La opción type establece el tipo booleano que debe usarse. Lea lo siguiente para más detalles.
Por defecto, este filtro funciona convirtiendo la entrada a un valor
BOOLEAN; en otras palabras, opera de forma similar a llamar a
(boolean) $value.
$filter = new Zend_Filter_Boolean(); $value = ''; $result = $filter->filter($value); // returns false
Esto significa que, sin proporcionar ninguna configuración,
Zend_Filter_Boolean acepta todos los tipos de entrada y devuelve un
BOOLEAN tal como se obtendría al convertir el tipo a
BOOLEAN.
A veces la conversión con (boolean) no será suficiente.
Zend_Filter_Boolean le permite configurar tipos específicos a
convertir, así como cuáles omitir.
Se pueden manejar los siguientes tipos:
boolean: Devuelve un valor booleano tal cual.
integer: Convierte un valor entero 0 a
FALSE.float: Convierte un valor flotante 0.0 a
FALSE.string: Convierte una cadena vacía '' a
FALSE.zero: Convierte una cadena que contiene el único carácter cero ('0') a
FALSE.empty_array: Convierte un array vacío a
FALSE.null: Convierte un valor
NULLaFALSE.php: Convierte valores según lo hace PHP al convertirlos a
BOOLEAN.false_string: Convierte una cadena que contiene la palabra "false" a un booleano
FALSE.yes: Convierte una cadena localizada que contiene la palabra "no" a
FALSE.all: Convierte todos los tipos anteriores a
BOOLEAN.
Todos los demás valores dados devolverán TRUE por defecto.
Hay varias formas de seleccionar cuáles de los tipos anteriores se filtran. Puede indicar uno o varios tipos y sumarlos, puede dar un array, puede usar constantes, o puede dar una cadena de texto. Vea los siguientes ejemplos:
// converts 0 to false
$filter = new Zend_Filter_Boolean(Zend_Filter_Boolean::INTEGER);
// converts 0 and '0' to false
$filter = new Zend_Filter_Boolean(
Zend_Filter_Boolean::INTEGER + Zend_Filter_Boolean::ZERO
);
// converts 0 and '0' to false
$filter = new Zend_Filter_Boolean(array(
'type' => array(
Zend_Filter_Boolean::INTEGER,
Zend_Filter_Boolean::ZERO,
),
));
// converts 0 and '0' to false
$filter = new Zend_Filter_Boolean(array(
'type' => array(
'integer',
'zero',
),
));
También puede dar una instancia de Zend_Config para establecer los tipos
deseados. Para establecer los tipos después de la instanciación, use el método
setType().
Como se mencionó anteriormente, Zend_Filter_Boolean también puede
reconocer las cadenas localizadas "yes" y "no". Esto significa que puede preguntarle a su cliente en un
formulario "sí" o "no" en su idioma nativo y
Zend_Filter_Boolean convertirá la respuesta al valor booleano
apropiado.
Para establecer el idioma deseado, puede usar la opción locale, o
el método setLocale().
$filter = new Zend_Filter_Boolean(array(
'type' => Zend_Filter_Boolean::ALL,
'locale' => 'de',
));
// returns false
echo $filter->filter('nein');
$filter->setLocale('en');
// returns true
$filter->filter('yes');
A veces es necesario reconocer solo TRUE o
FALSE y devolver todos los demás valores sin cambios.
Zend_Filter_Boolean le permite hacer esto estableciendo la opción
casting en FALSE.
En este caso Zend_Filter_Boolean funcionará como se describe en la
siguiente tabla, que muestra qué valores devuelven TRUE o
FALSE. Todos los demás valores dados se devuelven sin cambios cuando
casting está establecido en FALSE
Tabla 35.1. Uso sin conversión
| Tipo | Verdadero | Falso |
|---|---|---|
Zend_Filter_Boolean::BOOLEAN |
TRUE |
FALSE |
Zend_Filter_Boolean::INTEGER |
0 | 1 |
Zend_Filter_Boolean::FLOAT |
0.0 | 1.0 |
Zend_Filter_Boolean::STRING |
"" | |
Zend_Filter_Boolean::ZERO |
"0" | "1" |
Zend_Filter_Boolean::EMPTY_ARRAY |
array() |
|
Zend_Filter_Boolean::NULL |
NULL |
|
Zend_Filter_Boolean::FALSE_STRING |
"false" (sin distinción de mayúsculas) | "true" (sin distinción de mayúsculas) |
Zend_Filter_Boolean::YES |
"yes" localizado (sin distinción de mayúsculas) | "no" localizado (sin distinción de mayúsculas) |
El siguiente ejemplo muestra el comportamiento al cambiar la opción casting:
$filter = new Zend_Filter_Boolean(array(
'type' => Zend_Filter_Boolean::ALL,
'casting' => false,
));
// returns false
echo $filter->filter(0);
// returns true
echo $filter->filter(1);
// returns the value
echo $filter->filter(2);
Este filtro le permite usar sus propios métodos en conjunto con
Zend_Filter. No tiene que crear un nuevo filtro cuando ya
tiene un método que hace el trabajo.
Las siguientes opciones son soportadas para Zend_Filter_Callback:
callback: Esto establece el callback que debe usarse.
options: Esta propiedad establece las opciones que se usan cuando se procesa el callback.
El uso de este filtro es bastante simple. Supongamos que queremos crear un filtro que invierta una cadena.
$filter = new Zend_Filter_Callback('strrev');
print $filter->filter('Hello!');
// returns "!olleH"
Como puede ver, es realmente simple usar un callback para definir un filtro propio. También es posible usar un método definido dentro de una clase, dando un array como callback.
// Our classdefinition
class MyClass
{
public function Reverse($param);
}
// The filter definition
$filter = new Zend_Filter_Callback(array('MyClass', 'Reverse'));
print $filter->filter('Hello!');
Para obtener el callback establecido actualmente use getCallback(), y para establecer
otro callback use setCallback().
![]() |
Posibles excepciones |
|---|---|
Debe tener en cuenta que definir un método de callback que no se pueda invocar generará una excepción. |
También es posible definir parámetros por defecto, que se pasan al método invocado como array cuando se ejecuta el filtro. Este array se concatenará con el valor que se va a filtrar.
$filter = new Zend_Filter_Callback(
array(
'callback' => 'MyMethod',
'options' => array('key' => 'param1', 'key2' => 'param2')
)
);
$filter->filter(array('value' => 'Hello'));
Cuando llamara manualmente a la definición del método anterior, se vería así:
$value = MyMethod('Hello', 'param1', 'param2');
Estos dos filtros son capaces de comprimir y descomprimir cadenas, archivos y directorios.
Las siguientes opciones son soportadas para Zend_Filter_Compress
y Zend_Filter_Decompress:
adapter: El adaptador de compresión que debe usarse. Por defecto es Gz.
options: Opciones adicionales que se pasan al adaptador en la inicialización. Cada adaptador soporta sus propias opciones.
Los siguientes formatos de compresión son soportados mediante su propio adaptador:
Bz2
Gz
Lzf
Rar
Tar
Zip
Cada formato de compresión tiene diferentes capacidades, como se describe a continuación. Todos los filtros de compresión pueden usarse de formas aproximadamente iguales, y difieren principalmente en las opciones disponibles y el tipo de compresión que ofrecen (tanto algorítmicamente como en términos de cadena frente a archivo frente a directorio)
Para crear un filtro de compresión necesita seleccionar el formato de compresión que quiere usar. La siguiente descripción toma el adaptador Bz2. Los detalles de todos los demás adaptadores se describen después de esta sección.
Los dos filtros son básicamente idénticos, ya que utilizan los mismos backends.
Zend_Filter_Compress debe usarse cuando desee comprimir
elementos, y Zend_Filter_Decompress debe usarse cuando desee
descomprimirlos.
Por ejemplo, si queremos comprimir una cadena, tenemos que inicializar
Zend_Filter_Compress e indicar el adaptador deseado.
$filter = new Zend_Filter_Compress('Bz2');
Para usar un adaptador diferente, simplemente lo especifica en el constructor.
También puede proporcionar un array de opciones o un objeto Zend_Config.
Si lo hace, proporcione como mínimo la clave "adapter", y luego la clave "options" o
"adapterOptions" (que debe ser un array de opciones para dar al adaptador en la
instanciación).
$filter = new Zend_Filter_Compress(array(
'adapter' => 'Bz2',
'options' => array(
'blocksize' => 8,
),
));
![]() |
Adaptador de compresión por defecto |
|---|---|
Cuando no se proporciona ningún adaptador de compresión, se usará el adaptador Gz. |
El uso es casi el mismo si queremos descomprimir una cadena. Simplemente debemos usar el filtro de descompresión en este caso.
$filter = new Zend_Filter_Decompress('Bz2');
Para obtener la cadena comprimida, tenemos que dar la cadena original. El valor filtrado es la versión comprimida de la cadena original.
$filter = new Zend_Filter_Compress('Bz2');
$compressed = $filter->filter('Uncompressed string');
// Returns the compressed string
La descompresión funciona de la misma manera.
$filter = new Zend_Filter_Decompress('Bz2');
$compressed = $filter->filter('Compressed string');
// Returns the uncompressed string
![]() |
Nota sobre la compresión de cadenas |
|---|---|
No todos los adaptadores soportan la compresión de cadenas. Formatos de compresión como Rar solo pueden manejar archivos y directorios. Para más detalles, consulte la sección del adaptador que desee usar. |
Crear un archivo comprimido funciona casi igual que comprimir una cadena. Sin embargo, en este caso necesitamos un parámetro adicional que contenga el nombre del archivo que queremos crear.
$filter = new Zend_Filter_Compress(array(
'adapter' => 'Bz2',
'options' => array(
'archive' => 'filename.bz2',
),
));
$compressed = $filter->filter('Uncompressed string');
// Returns true on success and creates the archive file
En el ejemplo anterior la cadena sin comprimir se comprime, y luego se escribe en el archivo comprimido indicado.
![]() |
Los archivos comprimidos existentes serán sobrescritos |
|---|---|
El contenido de cualquier archivo existente será sobrescrito cuando el nombre de archivo del archivo comprimido indicado ya exista. |
Cuando desee comprimir un archivo, debe dar el nombre del archivo con su ruta.
$filter = new Zend_Filter_Compress(array(
'adapter' => 'Bz2',
'options' => array(
'archive' => 'filename.bz2'
),
));
$compressed = $filter->filter('C:\temp\compressme.txt');
// Returns true on success and creates the archive file
También puede especificar un directorio en lugar de un nombre de archivo. En este caso todo el directorio con todos sus archivos y subdirectorios será comprimido en el archivo comprimido.
$filter = new Zend_Filter_Compress(array(
'adapter' => 'Bz2',
'options' => array(
'archive' => 'filename.bz2'
),
));
$compressed = $filter->filter('C:\temp\somedir');
// Returns true on success and creates the archive file
![]() |
No comprima directorios grandes o base |
|---|---|
Nunca debe comprimir directorios grandes o base, como una partición completa. Comprimir una partición completa es una tarea que consume mucho tiempo y que puede llevar a problemas masivos en su servidor cuando no hay suficiente espacio o su script tarda demasiado tiempo. |
Descomprimir un archivo comprimido funciona casi igual que comprimirlo. Debe especificar el parámetro archive, o dar el nombre de archivo del archivo comprimido cuando descomprima el archivo.
$filter = new Zend_Filter_Decompress('Bz2');
$compressed = $filter->filter('filename.bz2');
// Returns true on success and decompresses the archive file
Algunos adaptadores soportan descomprimir el archivo en otro subdirectorio. En este caso puede establecer el parámetro target.
$filter = new Zend_Filter_Decompress(array(
'adapter' => 'Zip',
'options' => array(
'target' => 'C:\temp',
)
));
$compressed = $filter->filter('filename.zip');
// Returns true on success and decompresses the archive file
// into the given target directory
![]() |
Los directorios de extracción deben existir |
|---|---|
Cuando desee descomprimir un archivo comprimido en un directorio, ese directorio debe existir. |
El adaptador Bz2 puede comprimir y descomprimir:
Cadenas
Archivos
Directorios
Este adaptador hace uso de la extensión Bz2 de PHP.
Para personalizar la compresión, este adaptador soporta las siguientes opciones:
Archive: Este parámetro establece el archivo comprimido que debe usarse o crearse.
Blocksize: Este parámetro establece el tamaño de bloque a usar. Puede ser de '0' a '9'. El valor por defecto es '4'.
Todas las opciones se pueden establecer en la instanciación o usando un método relacionado. Por ejemplo, los
métodos relacionados para 'Blocksize' son getBlocksize() y
setBlocksize(). También puede usar el método
setOptions(), que acepta todas las opciones como array.
El adaptador Gz puede comprimir y descomprimir:
Cadenas
Archivos
Directorios
Este adaptador hace uso de la extensión Zlib de PHP.
Para personalizar la compresión, este adaptador soporta las siguientes opciones:
Archive: Este parámetro establece el archivo comprimido que debe usarse o crearse.
Level: El nivel de compresión a usar. Puede ser de '0' a '9'. El valor por defecto es '9'.
Mode: Hay dos modos soportados. 'compress' y 'deflate'. El valor por defecto es 'compress'.
Todas las opciones se pueden establecer en la inicialización o usando un método relacionado. Por ejemplo, los
métodos relacionados para 'Level' son getLevel() y
setLevel(). También puede usar el método
setOptions(), que acepta todas las opciones como array.
El adaptador Lzf puede comprimir y descomprimir:
Cadenas
![]() |
Lzf solo soporta cadenas |
|---|---|
El adaptador Lzf no puede manejar archivos ni directorios. |
Este adaptador hace uso de la extensión Lzf de PHP.
No hay opciones disponibles para personalizar este adaptador.
El adaptador Rar puede comprimir y descomprimir:
Archivos
Directorios
![]() |
Rar no soporta cadenas |
|---|---|
El adaptador Rar no puede manejar cadenas. |
Este adaptador hace uso de la extensión Rar de PHP.
![]() |
La compresión Rar no está soportada |
|---|---|
Debido a restricciones con el formato de compresión Rar, no hay compresión disponible de forma gratuita. Cuando desee comprimir archivos en un nuevo archivo Rar, debe proporcionar un callback al adaptador que pueda invocar un programa de compresión Rar. |
Para personalizar la compresión, este adaptador soporta las siguientes opciones:
Archive: Este parámetro establece el archivo comprimido que debe usarse o crearse.
Callback: Un callback que proporciona soporte de compresión a este adaptador.
Password: La contraseña que debe usarse para la descompresión.
Target: El destino donde se escribirán los archivos descomprimidos.
Todas las opciones se pueden establecer en la instanciación o usando un método relacionado. Por ejemplo, los
métodos relacionados para 'Target' son getTarget() y
setTarget(). También puede usar el método
setOptions(), que acepta todas las opciones como array.
El adaptador Tar puede comprimir y descomprimir:
Archivos
Directorios
![]() |
Tar no soporta cadenas |
|---|---|
El adaptador Tar no puede manejar cadenas. |
Este adaptador hace uso del componente Archive_Tar de
PEAR.
Para personalizar la compresión, este adaptador soporta las siguientes opciones:
Archive: Este parámetro establece el archivo comprimido que debe usarse o crearse.
Mode: Un modo a usar para la compresión. Se soportan ya sea '
NULL' que significa ninguna compresión, 'Gz' que hace uso de la extensión Zlib de PHP, y 'Bz2' que hace uso de la extensión Bz2 de PHP. El valor por defecto es 'NULL'.Target: El destino donde se escribirán los archivos descomprimidos.
Todas las opciones se pueden establecer en la instanciación o usando un método relacionado. Por ejemplo, los
métodos relacionados para 'Target' son getTarget() y
setTarget(). También puede usar el método
setOptions(), que acepta todas las opciones como array.
![]() |
Uso de directorios |
|---|---|
Al comprimir directorios con Tar se usa la ruta completa del archivo. Esto significa que los archivos Tar creados no solo tendrán el subdirectorio, sino la ruta completa del archivo comprimido. |
El adaptador Zip puede comprimir y descomprimir:
Cadenas
Archivos
Directorios
![]() |
Zip no soporta descompresión a cadena |
|---|---|
El adaptador Zip no puede manejar la descompresión a una cadena; la descompresión siempre se escribirá en un archivo. |
Este adaptador hace uso de la extensión Zip de
PHP.
Para personalizar la compresión, este adaptador soporta las siguientes opciones:
Archive: Este parámetro establece el archivo comprimido que debe usarse o crearse.
Target: El destino donde se escribirán los archivos descomprimidos.
Todas las opciones se pueden establecer en la instanciación o usando un método relacionado. Por ejemplo, los
métodos relacionados para 'Target' son getTarget() y
setTarget(). También puede usar el método
setOptions(), que acepta todas las opciones como array.
Devuelve la cadena $value, eliminando todo excepto los dígitos.
No hay opciones adicionales para Zend_Filter_Digits.
Dada una cadena que contiene una ruta a un archivo, esta función devolverá el nombre del directorio.
No hay opciones adicionales para Zend_Filter_Dir.
Estos filtros permiten cifrar y descifrar cualquier cadena dada. Para ello hacen uso de
adaptadores. Actualmente hay adaptadores para las extensiones Mcrypt y
OpenSSL de PHP.
Las siguientes opciones son soportadas para Zend_Filter_Encrypt y
Zend_Filter_Decrypt:
adapter: Esto establece el adaptador de cifrado que debe usarse
algorithm: Solo para
MCrypt. El algoritmo que debe usarse. Debería ser uno de los cifrados de algoritmo que se pueden encontrar en los cifrados mcrypt de PHP. Si no se establece, por defecto es blowfish.algorithm_directory: Solo para
MCrypt. El directorio donde se puede encontrar el algoritmo. Si no se establece, por defecto es la ruta establecida dentro de la extensión mcrypt.compression: Si el valor cifrado debe comprimirse. Por defecto no hay compresión.
envelope: Solo para
OpenSSL. La clave de sobre cifrada del usuario que cifró el contenido. Puede proporcionar la ruta y el nombre de archivo del archivo de clave, o simplemente el contenido del archivo de clave en sí. Cuando se ha establecido la opción package, puede omitir este parámetro.key: Solo para
MCrypt. La clave de cifrado con la que se cifrará la entrada. Se necesita la misma clave para el descifrado.mode: Solo para
MCrypt. El modo de cifrado que debe usarse. Debería ser uno de los modos que se pueden encontrar en los modos mcrypt de PHP. Si no se establece, por defecto es 'cbc'.mode_directory: Solo para
MCrypt. El directorio donde se puede encontrar el modo. Si no se establece, por defecto es la ruta establecida dentro de la extensiónMcrypt.package: Solo para
OpenSSL. Si la clave de sobre debe empaquetarse con el valor cifrado. Por defecto esFALSE.private: Solo para
OpenSSL. Su clave privada que se usará para cifrar el contenido. La clave privada también puede ser un nombre de archivo con ruta del archivo de clave, o simplemente el contenido del archivo de clave en sí.public: Solo para
OpenSSL. La clave pública del usuario al que quiere proporcionar el contenido cifrado. Puede dar varias claves públicas usando un array. Puede proporcionar la ruta y el nombre de archivo del archivo de clave, o simplemente el contenido del archivo de clave en sí.salt: Solo para
MCrypt. Si la clave debe usarse como valor de sal. La clave usada para el cifrado entonces también se cifrará. Por defecto esFALSE.vector: Solo para
MCrypt. El vector de inicialización que se usará. Si no se establece, será un vector aleatorio.
Como estas dos metodologías de cifrado funcionan de forma completamente diferente, el uso de los adaptadores también difiere. Tiene que seleccionar el adaptador que quiere usar al inicializar el filtro.
// Use the Mcrypt adapter
$filter1 = new Zend_Filter_Encrypt(array('adapter' => 'mcrypt'));
// Use the OpenSSL adapter
$filter2 = new Zend_Filter_Encrypt(array('adapter' => 'openssl'));
Para establecer otro adaptador también puede usar setAdapter(), y el
método getAdapter() para obtener el adaptador establecido actualmente.
// Use the Mcrypt adapter
$filter = new Zend_Filter_Encrypt();
$filter->setAdapter('openssl');
![]() |
Nota |
|---|---|
Cuando no proporciona la opción adapter ni usa
|
Cuando ha instalado la extensión Mcrypt puede usar el
adaptador Mcrypt. Si proporciona una cadena en lugar de un array de
opciones, esta cadena se usará como clave.
También puede obtener y establecer los valores de cifrado posteriormente con los métodos
getEncryption() y setEncryption().
![]() |
Nota |
|---|---|
Tenga en cuenta que obtendrá una excepción si la extensión mcrypt no está disponible en su entorno. |
![]() |
Nota |
|---|---|
También debe tener en cuenta que todos los ajustes se comprobarán al crear la instancia
o al llamar a |
Puede obtener o establecer el vector de cifrado llamando a getVector()
y setVector(). Una cadena dada se truncará o rellenará hasta
el tamaño de vector necesario del algoritmo usado.
![]() |
Nota |
|---|---|
Tenga en cuenta que cuando no está usando un vector propio, debe obtener el vector y almacenarlo. De lo contrario no podrá decodificar la cadena codificada. |
// Use the default blowfish settings
$filter = new Zend_Filter_Encrypt('myencryptionkey');
// Set a own vector, otherwise you must call getVector()
// and store this vector for later decryption
$filter->setVector('myvector');
// $filter->getVector();
$encrypted = $filter->filter('text_to_be_encoded');
print $encrypted;
// For decryption look at the Decrypt filter
Para descifrar contenido que fue previamente cifrado con Mcrypt
necesita tener las opciones con las que se llamó al cifrado.
Hay una diferencia notable para usted. Cuando no proporcionó un vector en el
cifrado, necesita obtenerlo después de cifrar el contenido usando el
método getVector() en el filtro de cifrado. Sin el
vector correcto no podrá descifrar el contenido.
En cuanto haya proporcionado todas las opciones, el descifrado es tan simple como el cifrado.
// Use the default blowfish settings
$filter = new Zend_Filter_Decrypt('myencryptionkey');
// Set the vector with which the content was encrypted
$filter->setVector('myvector');
$decrypted = $filter->filter('encoded_text_normally_unreadable');
print $decrypted;
![]() |
Nota |
|---|---|
Tenga en cuenta que obtendrá una excepción si la extensión mcrypt no está disponible en su entorno. |
![]() |
Nota |
|---|---|
También debe tener en cuenta que todos los ajustes se comprobarán al crear la instancia
o al llamar a |
Cuando ha instalado la extensión OpenSSL puede usar el
adaptador OpenSSL. Puede obtener o establecer las claves públicas
posteriormente con los métodos getPublicKey() y
setPublicKey(). La clave privada también se puede obtener y establecer
con los métodos relacionados getPrivateKey() y
setPrivateKey().
// Use openssl and provide a private key
$filter = new Zend_Filter_Encrypt(array(
'adapter' => 'openssl',
'private' => '/path/to/mykey/private.pem'
));
// of course you can also give the public keys at initiation
$filter->setPublicKey(array(
'/public/key/path/first.pem',
'/public/key/path/second.pem'
));
![]() |
Nota |
|---|---|
Tenga en cuenta que el adaptador |
Cuando también quiera codificar las claves, debe proporcionar una frase de paso con el
método setPassphrase(). Cuando quiera decodificar contenido que
fue codificado con una frase de paso, no solo necesitará la clave pública, sino también la
frase de paso para decodificar la clave cifrada.
// Use openssl and provide a private key
$filter = new Zend_Filter_Encrypt(array(
'adapter' => 'openssl',
'private' => '/path/to/mykey/private.pem'
));
// of course you can also give the public keys at initiation
$filter->setPublicKey(array(
'/public/key/path/first.pem',
'/public/key/path/second.pem'
));
$filter->setPassphrase('mypassphrase');
Por último, cuando use OpenSSL necesita dar al receptor el contenido cifrado, la frase de paso cuando haya proporcionado una, y las claves de sobre para el descifrado.
Esto significa que tiene que obtener las claves de sobre después del cifrado con el
método getEnvelopeKey().
Así que nuestro ejemplo completo para cifrar contenido con OpenSSL se
ve así.
// Use openssl and provide a private key
$filter = new Zend_Filter_Encrypt(array(
'adapter' => 'openssl',
'private' => '/path/to/mykey/private.pem'
));
// of course you can also give the public keys at initiation
$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;
// For decryption look at the Decrypt filter
Como se vio antes, necesita obtener la clave de sobre para poder descifrar el valor cifrado anteriormente. Esto puede ser muy molesto cuando trabaja con múltiples valores.
Para tener un uso simplificado puede establecer la opción package en
TRUE. El valor por defecto es FALSE.
// Use openssl and provide a private key
$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;
// For decryption look at the Decrypt filter
Ahora el valor devuelto contiene el valor cifrado y el sobre. No necesita
obtenerlos después de la compresión. Pero, y este es el aspecto negativo de
esta característica, el valor cifrado ahora solo se puede descifrar usando
Zend_Filter_Encrypt.
Según el valor original, el valor cifrado puede ser una cadena muy grande. Para
reducir el valor, Zend_Filter_Encrypt permite el uso de
compresión.
La opción compression puede establecerse ya sea con el nombre de un adaptador de compresión, o con un array que establezca todas las opciones deseadas para el adaptador de compresión.
// Use basic compression adapter
$filter1 = new Zend_Filter_Encrypt(array(
'adapter' => 'openssl',
'private' => '/path/to/mykey/private.pem',
'public' => '/public/key/path/public.pem',
'package' => true,
'compression' => 'bz2'
));
// Use basic compression adapter
$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' => '\usr\tmp\tmp.zip')
));
![]() |
Descifrado con los mismos ajustes |
|---|---|
Cuando quiera descifrar un valor que además está comprimido, necesita establecer los mismos ajustes de compresión para el descifrado que para el cifrado. De lo contrario el descifrado fallará. |
El descifrado con OpenSSL es tan simple como el cifrado. Pero necesita
tener todos los datos de la persona que cifró el contenido. Vea el siguiente ejemplo:
// Use openssl and provide a private key
$filter = new Zend_Filter_Decrypt(array(
'adapter' => 'openssl',
'private' => '/path/to/mykey/private.pem'
));
// of course you can also give the envelope keys at initiation
$filter->setEnvelopeKey(array(
'/key/from/encoder/first.pem',
'/key/from/encoder/second.pem'
));
![]() |
Nota |
|---|---|
Tenga en cuenta que el adaptador |
Opcionalmente podría ser necesario proporcionar la frase de paso para descifrar las claves
en sí mediante el método setPassphrase().
// Use openssl and provide a private key
$filter = new Zend_Filter_Decrypt(array(
'adapter' => 'openssl',
'private' => '/path/to/mykey/private.pem'
));
// of course you can also give the envelope keys at initiation
$filter->setEnvelopeKey(array(
'/key/from/encoder/first.pem',
'/key/from/encoder/second.pem'
));
$filter->setPassphrase('mypassphrase');
Por último, decodifique el contenido. Nuestro ejemplo completo para descifrar el contenido previamente cifrado se ve así.
// Use openssl and provide a private key
$filter = new Zend_Filter_Decrypt(array(
'adapter' => 'openssl',
'private' => '/path/to/mykey/private.pem'
));
// of course you can also give the envelope keys at initiation
$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;
Devuelve la cadena $value, convirtiendo los caracteres a sus
equivalentes de entidades HTML correspondientes cuando existen.
Las siguientes opciones son soportadas para Zend_Filter_HtmlEntities:
quotestyle: Equivalente al parámetro nativo quote_style de la función htmlentities de PHP. Esto le permite definir qué se hará con las comillas 'simples' y "dobles". Se aceptan las siguientes constantes:
ENT_COMPAT,ENT_QUOTESENT_NOQUOTES, siendo el valor por defectoENT_COMPAT.-
charset: Equivalente al parámetro nativo charset de la función htmlentities de PHP. Esto define el conjunto de caracteres que se usará en el filtrado. A diferencia de la función nativa de PHP, el valor por defecto es 'UTF-8'. Vea "http://php.net/htmlentities" para una lista de conjuntos de caracteres soportados.
![[Note]](images/note.png)
Nota Esta opción también se puede establecer mediante el parámetro
$optionscomo un objetoZend_Configo array. La clave de opción se aceptará ya sea como charset o encoding. -
doublequote: Equivalente al parámetro nativo double_encode de la función htmlentities de PHP. Si se establece en false, las entidades html existentes no se codificarán. Por defecto se convierte todo (true).
![[Note]](images/note.png)
Nota Esta opción debe establecerse mediante el parámetro
$optionso el métodosetDoubleEncode().
Vea el siguiente ejemplo del comportamiento por defecto de este filtro.
$filter = new Zend_Filter_HtmlEntities();
print $filter->filter('<');
Zend_Filter_HtmlEntities permite cambiar el estilo de comillas usado.
Esto puede ser útil cuando desea dejar sin filtrar las comillas dobles, simples o de ambos
tipos. Vea el siguiente ejemplo:
$filter = new Zend_Filter_HtmlEntities(array('quotestyle' => ENT_QUOTES));
$input = "A 'single' and " . '"double"';
print $filter->filter($input);
El ejemplo anterior devuelve A 'single' and "double". Observe que las comillas 'simples' así como las "dobles" se filtran.
$filter = new Zend_Filter_HtmlEntities(array('quotestyle' => ENT_COMPAT));
$input = "A 'single' and " . '"double"';
print $filter->filter($input);
El ejemplo anterior devuelve A 'single' and "double". Observe que las comillas "dobles" se filtran mientras que las 'simples' no se ven alteradas.
$filter = new Zend_Filter_HtmlEntities(array('quotestyle' => ENT_NOQUOTES));
$input = "A 'single' and " . '"double"';
print $filter->filter($input);
El ejemplo anterior devuelve A 'single' and "double". Observe que ni las comillas "dobles" ni las 'simples' se ven alteradas.
Para cambiar u obtener el quotestyle después de la instanciación, se pueden
usar respectivamente los dos métodos setQuoteStyle() y
getQuoteStyle().
setQuoteStyle() acepta un parámetro
$quoteStyle. Se aceptan las siguientes constantes:
ENT_COMPAT, ENT_QUOTES,
ENT_NOQUOTES
$filter = new Zend_Filter_HtmlEntities(); $filter->setQuoteStyle(ENT_QUOTES); print $filter->getQuoteStyle(ENT_QUOTES);
Para cambiar u obtener el charset después de la instanciación, se pueden
usar respectivamente los dos métodos setCharSet() y getCharSet().
setCharSet() acepta un parámetro
$charSet. Vea "http://php.net/htmlentities" para una lista de
conjuntos de caracteres soportados.
$filter = new Zend_Filter_HtmlEntities(); $filter->setQuoteStyle(ENT_QUOTES); print $filter->getQuoteStyle(ENT_QUOTES);
Para cambiar u obtener la opción doublequote después de la instanciación,
se pueden usar respectivamente los dos métodos setDoubleQuote() y
getDoubleQuote().
setDoubleQuote() acepta un parámetro booleano
$doubleQuote.
$filter = new Zend_Filter_HtmlEntities(); $filter->setQuoteStyle(ENT_QUOTES); print $filter->getQuoteStyle(ENT_QUOTES);
Zend_Filter_Int le permite transformar un valor escalar que contiene
en un entero.
No hay opciones adicionales para Zend_Filter_Int.
Estos dos filtros pueden cambiar una entrada localizada dada a su representación normalizada y
viceversa. Usan internamente Zend_Locale para hacer esta transformación
por usted.
Las siguientes opciones son soportadas para
Zend_Filter_LocalizedToNormalized y
Zend_Filter_NormalizedToLocalized:
date_format: Esto establece el formato de fecha a usar para la normalización y para detectar el formato de fecha localizado
locale: Esto establece el idioma a usar para la normalización y para detectar el formato localizado
precision: Esto establece la precisión a usar para la conversión de números
La normalización permite a su usuario introducir información en la notación de su propio idioma, y luego puede almacenar el valor normalizado en su base de datos, por ejemplo. La localización, por otro lado, le permite mostrar información normalizada de forma localizada a su usuario.
![]() |
Nota |
|---|---|
Tenga en cuenta que la normalización y la localización no son lo mismo que la traducción. Estos filtros no pueden traducir cadenas de un idioma a otro como cabría esperar con los meses o los nombres de los días. |
Los siguientes tipos de entrada pueden normalizarse y localizarse:
integer: Números enteros. La normalización devuelve la notación inglesa
float: Números flotantes. La normalización devuelve la notación inglesa
numbers: Otros números, como los reales. La normalización devuelve la notación inglesa
time: Valores de hora. El valor normalizado es un array con claves
date: Valores de fecha. El valor normalizado es un array con claves
Cualquier otra entrada se devolverá tal cual, sin modificarla.
![]() |
Nota |
|---|---|
Tenga en cuenta que la salida normalizada siempre se da como cadena. De lo contrario su entorno transferiría automáticamente la salida normalizada a la notación usada por el idioma en el que está configurado su entorno. |
Cualquier número dado, como entero, flotante o real, puede normalizarse. Tenga en cuenta que los números en notación científica en realidad no pueden ser manejados por este filtro.
Así que veamos en detalle cómo funciona esta normalización para números:
// Initiate the filter
$filter = new Zend_Filter_LocalizedToNormalized();
$filter->filter('123.456,78');
// returns the value '123456.78'
Supongamos que ha establecido el idioma 'de' como idioma de aplicación en general.
Zend_Filter_LocalizedToNormalized tomará el idioma establecido y
lo usará para detectar qué tipo de entrada dio usted. En nuestro ejemplo era un valor con
precisión. Ahora el filtro le devolverá la representación normalizada de este valor
como cadena.
También puede controlar cómo debe verse su número normalizado. Para ello puede dar
todas las opciones que también usa Zend_Locale_Format. Para
más detalles sobre las opciones disponibles, eche un vistazo a este
capítulo de Zend_Locale.
A continuación hay un ejemplo con precisión definida para que pueda ver cómo funcionan las opciones:
// Numeric Filter
$filter = new Zend_Filter_LocalizedToNormalized(array('precision' => 2));
$filter->filter('123.456');
// returns the value '123456.00'
$filter->filter('123.456,78901');
// returns the value '123456.79'
Las entradas de fecha y hora también pueden normalizarse. Todos los valores de fecha y hora dados se devolverán como array, donde cada parte de la fecha se da dentro de su propia clave.
// Initiate the filter
$filter = new Zend_Filter_LocalizedToNormalized();
$filter->filter('12.April.2009');
// returns array('day' => '12', 'month' => '04', 'year' => '2009')
Supongamos que ha establecido el idioma 'de' de nuevo. Ahora la entrada se detecta automáticamente como fecha, y obtendrá un array con claves como resultado.
Por supuesto, también puede controlar cómo se ve su entrada de fecha con las opciones date_format y locale.
// Date Filter
$filter = new Zend_Filter_LocalizedToNormalized(
array('date_format' => 'ss:mm:HH')
);
$filter->filter('11:22:33');
// returns array('hour' => '33', 'minute' => '22', 'second' => '11')
Cualquier número dado, como entero, flotante o real, puede localizarse. Tenga en cuenta que los números en notación científica en realidad no pueden ser manejados por este filtro.
Así que veamos en detalle cómo funciona la localización para números:
// Initiate the filter $filter = new Zend_Filter_NormalizedToLocalized(); $filter->filter(123456.78); // returns the value '123.456,78'
Supongamos que ha establecido el idioma 'de' como idioma de aplicación en general.
Zend_Filter_NormalizedToLocalized tomará el idioma establecido y
lo usará para detectar qué tipo de salida quiere obtener. En nuestro ejemplo era un valor
con precisión. Ahora el filtro le devolverá la representación localizada de este
valor como cadena.
También puede controlar cómo debe verse su número localizado. Para ello puede dar
todas las opciones que también usa Zend_Locale_Format. Para
detalles sobre cómo se usan estas opciones, eche un vistazo a este
capítulo de Zend_Locale.
A continuación hay un ejemplo con precisión definida para que pueda ver cómo funcionan las opciones:
// Numeric Filter
$filter = new Zend_Filter_NormalizedToLocalized(array('precision' => 2));
$filter->filter(123456);
// returns the value '123.456,00'
$filter->filter(123456.78901);
// returns the value '123.456,79'
Los valores normalizados de fecha y hora también pueden localizarse. Todos los valores de fecha y hora dados se devolverán como cadena, con el formato definido por el idioma establecido.
// Initiate the filter
$filter = new Zend_Filter_NormalizedToLocalized();
$filter->filter(array('day' => '12', 'month' => '04', 'year' => '2009');
// returns '12.04.2009'
Supongamos que ha establecido el idioma 'de' de nuevo. Ahora la entrada se detecta automáticamente como fecha, y se devolverá en el formato definido por el idioma 'de'.
Por supuesto, también puede controlar cómo se ve su entrada de fecha con las opciones date_format y locale.
// Date Filter
$filter = new Zend_Filter_LocalizedToNormalized(
array('date_format' => 'ss:mm:HH')
);
$filter->filter(array('hour' => '33', 'minute' => '22', 'second' => '11'));
// returns '11:22:33'
Este filtro cambia la entrada dada a NULL si cumple criterios
específicos. Esto suele ser necesario cuando se trabaja con bases de datos y se desea tener un
valor NULL en lugar de un booleano o cualquier otro tipo.
Las siguientes opciones son soportadas para Zend_Filter_Null:
type: El tipo de variable que debe soportarse.
Por defecto este filtro funciona como el método empty() de
PHP; en otras palabras, si
empty() devuelve un booleano TRUE, entonces se
devolverá un valor NULL.
$filter = new Zend_Filter_Null(); $value = ''; $result = $filter->filter($value); // returns null instead of the empty string
Esto significa que, sin proporcionar ninguna configuración,
Zend_Filter_Null aceptará todos los tipos de entrada y devolverá
NULL en los mismos casos que empty().
Cualquier otro valor se devolverá tal cual, sin ningún cambio.
A veces no es suficiente filtrar según empty(). Para ello,
Zend_Filter_Null le permite configurar qué tipo se
convertirá y cuál no.
Se pueden manejar los siguientes tipos:
boolean: Convierte un valor booleano
FALSEaNULL.integer: Convierte un valor entero 0 a
NULL.empty_array: Convierte un array vacío a
NULL.string: Convierte una cadena vacía '' a
NULL.zero: Convierte una cadena que contiene el único carácter cero ('0') a
NULL.all: Convierte todos los tipos anteriores a
NULL. (Este es el comportamiento por defecto.)
Hay varias formas de seleccionar cuáles de los tipos anteriores se filtran. Puede indicar uno o varios tipos y sumarlos, puede dar un array, puede usar constantes, o puede dar una cadena de texto. Vea los siguientes ejemplos:
// converts false to null
$filter = new Zend_Filter_Null(Zend_Filter_Null::BOOLEAN);
// converts false and 0 to null
$filter = new Zend_Filter_Null(
Zend_Filter_Null::BOOLEAN + Zend_Filter_Null::INTEGER
);
// converts false and 0 to null
$filter = new Zend_Filter_Null( array(
Zend_Filter_Null::BOOLEAN,
Zend_Filter_Null::INTEGER
));
// converts false and 0 to null
$filter = new Zend_Filter_Null(array(
'boolean',
'integer',
));
También puede dar una instancia de Zend_Config para establecer los tipos
deseados. Para establecer los tipos posteriormente use setType().
Zend_Filter_PregReplace realiza una búsqueda usando expresiones regulares
y reemplaza todos los elementos encontrados.
Las siguientes opciones son soportadas para Zend_Filter_PregReplace:
match: El patrón que se buscará.
replace: La cadena que se usa como reemplazo de las coincidencias.
Para usar este filtro correctamente debe dar dos opciones:
Debe darse la opción match para establecer el patrón que se buscará. Puede ser una cadena para un solo patrón, o un array de cadenas para varios patrones.
Para establecer el patrón que se usará como reemplazo se debe usar la opción replace. Puede ser una cadena para un solo patrón, o un array de cadenas para varios patrones.
$filter = new Zend_Filter_PregReplace(array('match' => '/bob/',
'replace' => 'john'));
$input = 'Hy bob!';
$filter->filter($input);
// returns 'Hy john!'
Puede usar getMatchPattern() y
setMatchPattern() para establecer el patrón de coincidencia posteriormente. Para
establecer el patrón de reemplazo puede usar getReplacement() y
setReplacement().
$filter = new Zend_Filter_PregReplace();
$filter->setMatchPattern(array('bob', 'Hy'))
->setReplacement(array('john', 'Bye'));
$input = 'Hy bob!";
$filter->filter($input);
// returns 'Bye john!'
Para un uso más complejo, eche un vistazo al capítulo de patrones PCRE de PHP.
Este filtro resuelve los enlaces y nombres de ruta dados y devuelve nombres de ruta absolutos canonicalizados.
Las siguientes opciones son soportadas para Zend_Filter_RealPath:
exists: Esta opción por defecto es
TRUE, lo que comprueba si la ruta dada realmente existe.
Para cualquier enlace o nombre de ruta dado se devolverá su ruta absoluta.
Las referencias a '/./', '/../' y los caracteres extra
'/' en la ruta de entrada se eliminarán. La ruta resultante
no tendrá ningún enlace simbólico, ni carácter '/./' o
'/../'.
Zend_Filter_RealPath devolverá FALSE en
caso de fallo, por ejemplo si el archivo no existe. En sistemas BSD
Zend_Filter_RealPath no falla si solo el último componente de la ruta
no existe, mientras que otros sistemas devolverán FALSE.
$filter = new Zend_Filter_RealPath(); $path = '/www/var/path/../../mypath'; $filtered = $filter->filter($path); // returns '/www/mypath'
A veces es útil obtener también rutas cuando no existen, por ejemplo cuando quiere
obtener la ruta real de una ruta que quiere crear. Puede entonces dar un
FALSE en la inicialización, o usar setExists() para
establecerlo.
$filter = new Zend_Filter_RealPath(false); $path = '/www/var/path/../../non/existing/path'; $filtered = $filter->filter($path); // returns '/www/non/existing/path' // even when file_exists or realpath would return false
Este filtro convierte cualquier entrada a minúsculas.
Las siguientes opciones son soportadas para
Zend_Filter_StringToLower:
encoding: Esta opción puede usarse para establecer una codificación que debe usarse.
Este es un ejemplo básico:
$filter = new Zend_Filter_StringToLower();
print $filter->filter('SAMPLE');
// returns "sample"
Por defecto solo manejará caracteres del idioma actual de su
servidor. Los caracteres de otros conjuntos de caracteres se ignorarían. Aun así, es
posible convertirlos también a minúsculas cuando la extensión mbstring está disponible
en su entorno. Simplemente establezca la codificación deseada al inicializar el
filtro StringToLower. O use el
método setEncoding() para cambiar la codificación posteriormente.
// using UTF-8
$filter = new Zend_Filter_StringToLower('UTF-8');
// or give an array which can be useful when using a configuration
$filter = new Zend_Filter_StringToLower(array('encoding' => 'UTF-8'));
// or do this afterwards
$filter->setEncoding('ISO-8859-1');
![]() |
Establecer codificaciones incorrectas |
|---|---|
|
Tenga en cuenta que obtendrá una excepción si quiere establecer una codificación y la extensión mbstring no está disponible en su entorno. También, al intentar establecer una codificación que no está soportada por su extensión mbstring, obtendrá una excepción. |
Este filtro convierte cualquier entrada a mayúsculas.
Las siguientes opciones son soportadas para
Zend_Filter_StringToUpper:
encoding: Esta opción puede usarse para establecer una codificación que debe usarse.
Este es un ejemplo básico para usar el filtro StringToUpper:
$filter = new Zend_Filter_StringToUpper();
print $filter->filter('Sample');
// returns "SAMPLE"
Al igual que el filtro StringToLower, este filtro maneja
solo caracteres del idioma actual de su servidor. El uso de conjuntos de
caracteres diferentes funciona igual que con StringToLower.
$filter = new Zend_Filter_StringToUpper(array('encoding' => 'UTF-8'));
// or do this afterwards
$filter->setEncoding('ISO-8859-1');
Este filtro modifica una cadena dada de tal manera que se eliminan ciertos caracteres del principio y del final.
Las siguientes opciones son soportadas para Zend_Filter_StringTrim:
charlist: Lista de caracteres a eliminar del principio y del final de la cadena. Si no se establece o es nulo, se invocará el comportamiento por defecto, que consiste en eliminar solo los espacios en blanco del principio y del final de la cadena.
A continuación se muestra un ejemplo básico de uso:
$filter = new Zend_Filter_StringTrim();
print $filter->filter(' This is (my) content: ');
El ejemplo anterior devuelve 'This is (my) content:'. Observe que los caracteres de espacio en blanco se han eliminado.
$filter = new Zend_Filter_StringTrim(':');
// or new Zend_Filter_StringTrim(array('charlist' => ':'));
print $filter->filter(' This is (my) content:');
El ejemplo anterior devuelve 'This is (my) content'. Observe que se eliminan los caracteres de espacio en blanco
y los dos puntos. También puede proporcionar una instancia de
Zend_Config o un array con una clave 'charlist'. Para establecer la
lista de caracteres deseada después de la instanciación, use el
método setCharList().
getCharList() devuelve los valores establecidos para charlist.
Este filtro modifica una cadena dada y elimina todos los caracteres de nueva línea dentro de esa cadena.
No hay opciones adicionales para Zend_Filter_StripNewLines.
Este filtro puede eliminar etiquetas XML y HTML del contenido dado.
![]() |
Zend_Filter_StripTags es potencialmente inseguro |
|---|---|
|
Tenga en cuenta que
Usar
|
Las siguientes opciones son soportadas para Zend_Filter_StripTags:
allowAttribs: Esta opción establece los atributos que se aceptan. Todos los demás atributos se eliminan del contenido dado
allowTags: Esta opción establece las etiquetas que se aceptan. Todas las demás etiquetas se eliminarán del contenido dado
Vea el siguiente ejemplo del comportamiento por defecto de este filtro:
$filter = new Zend_Filter_StripTags();
print $filter->filter('<B>My content</B>');
Como resultado obtendrá el contenido sin etiquetas 'My content'.
Cuando el contenido contiene etiquetas rotas o parciales, todo el contenido siguiente se eliminará. Vea el siguiente ejemplo:
$filter = new Zend_Filter_StripTags();
print $filter->filter('This contains <a href="http://example.com">no ending tag');
Lo anterior devolverá 'This contains', con el resto eliminado.
Zend_Filter_StripTags permite eliminar todas las etiquetas excepto las definidas.
Esto puede usarse, por ejemplo, para eliminar todas las etiquetas excepto los enlaces de un texto.
$filter = new Zend_Filter_StripTags(array('allowTags' => 'a'));
$input = "A text with <br/> a <a href='link.com'>link</a>";
print $filter->filter($input);
// returns: A text with a <a href='link.com'>link</a>
El ejemplo anterior elimina todas las etiquetas excepto el enlace. Proporcionando un array puede establecer varias etiquetas a la vez.
![]() |
Advertencia |
|---|---|
No use esta característica para obtener un contenido probablemente seguro. Este componente no reemplaza el uso de un filtro html correctamente configurado. |
También es posible eliminar todos los atributos excepto los permitidos de una etiqueta.
$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);
// returns: A text with a <img src='picture.com'>picture</img>
El ejemplo anterior elimina todas las etiquetas excepto img. Además, de la etiqueta img se eliminarán todos los atributos excepto src. Proporcionando un array puede establecer varios atributos a la vez.
![[Warning]](images/warning.png)