Índice de contenidos
Instalación en Windows
Instalación en Ubuntu
Servidores seguros
Páginas dinámicas
Sintaxis básica
Operaciones
Arrays
Formatos de presentación
Operadores
Bucles
Extraer y ord. información
Funciones
Ficheros externos
Imágenes dinámicas
Gestión de directorios
Cookies y sesiones
Clases y objetos
Ficheros en formato PDF
Bases de datos MySQL
PHP y XML
PDO - Bases SQLite / MySQL
MySQL a traves de misqli
Algo de JavaScript y AJAXFunciones sobre cadenas
Como complemento a las descritas en la página anterior, añadimos aquí algunas otras funciones PHP que también permiten manejar cadenas de caracteres.
AddSlashes(cadena)Inserta el carácter \ delante los siguientes: "(comillas dobles), ' (comillas simples), \ (escape) y NUL (el bit nulo).
stripslashes(cadena)Quita las marcas añadidas a una cadena con la función AddSlashes().
chunk_split(cadena, nº caracteres, separador )Devuelve la cadena cadena después de haberle insertado, cada nº caracteres, la cadena indicada en el parámetro separador. Si no se indica separador PHP pondrá un espacio. Si no se establece el parámetro nº caracteres insertará el separador cada 76 caracteres. Esta función coloca siempre un separador al final de la cadena.
parse_str(cadena)Devuelve las variables –con su valor– indicadas dentro de la cadena (observa la sintaxis del ejemplo). Dentro de la cadena cada variable se denomina con un nombre que va seguido de un signo igual. Los espacios se señalan con el signo + y los separadores de variables son signos &
explode(separador, cadena,numero)Devuelve un array cuyos elementos contienen cada una de las porciones de la cadena (cadena) comprendidas entre dos de los caracteres señalados como (separador) hasta el máximo de porciones señaladas (numero). Los caracteres separadores no son incluídos en las cadenas resultantes. Si no se indica la cantidad de porciones, será fraccionada toda la cadena. Si se indica numero el último trozo contendrá toda la cadena restante.
implode(separador, array)Devuelve una cadena formada por todos los elementos del array separados mediante los caracteres indicados en separador.
join(separador, array)Es idéntica a implode.
strtok(cadena, separador)Esta función divide la cadena cadena en trozos delimitados por el separador que se indica en separador. Cuando se invoca la primera vez –extrae el primer trozo– debe llevar las sintaxis strtok(cadena,separador). Al invocarla sucesivamente, se escribe solo strtok(" ") e irá recogiendo de forma secuencial los trozos sucesivos.
| Marcas, divisiones y uniones de cadenas | ||
| Variable cadena | Sintaxis | Resultado |
| $a="Esta ' y \ y también NUL" | AddSlashes($a) | $a="Esta \' y \\ y también NUL" |
| $a="Esta \' y \\ y también NUL" | stripslashes($a) | Esta ' y y también el nulo |
| $a="Esta es una cadena larga que presuntamente será troceada" | chunk_split($a,5,"–") | Esta –es un–a cad–ena l–arga –que p–resun–tamen–te se–rá tr–ocead–a– |
| $a="Esta es una cadena larga que presuntamente será troceada" | chunk_split($a,5) | Esta es un a cad ena l arga que p resun tamen te se rá tr ocead a |
| $a="Esta es una cadena larga que presuntamente será troceada" | chunk_split($a,76,"-") | Esta es una cadena larga que presuntamente será troceada- |
| $todo="v1=Esto+sera+una+variable&v2=esto+otra&p[]=incluso+un+array" | ||
| Divide la cadena $todo en sus componentes | parse_str($todo); echo $v1; echo $v2; echo $p[0]; |
Esto sera una variable esto otra incluso un array |
| $a="Esta cadena sera devuelta en trozos" | ||
| Recogerá en un array cada uno de los trozos delimitados por los separadores | $trozo1=explode(" ",$a); echo $trozo1[0]; echo $trozo1[1]; echo $trozo1[2]; echo $trozo1[3]; echo $trozo1[4]; echo $trozo1[5]; > |
Esta cadena sera devuelta en trozos |
| Recogerá en un array cada uno de los trozos delimitados por los separadores | $trozo2=explode("a",$a); echo $trozo2[0]; echo $trozo2[1]; echo $trozo2[2]; echo $trozo2[3]; echo $trozo2[4]; echo $trozo2[5]; |
Est c den ser devuelt en trozos |
| Recogerá en un array cada uno de los trozos delimitados por los separadores hasta un máximo de 3 Anteponemos @ a print para evitar mensajes de error en los valores vacíos |
$trozo3=explode(" ",$a,3); @print $trozo3[0]; @print $trozo3[1]; @print $trozo3[2]; @print $trozo3[3]; @print $trozo3[4]; @print $trozo3[5]; |
Esta cadena sera devuelta en trozos |
| Recogerá en un array cada uno de los trozos delimitados por los separadores hasta un máximo de 3 Anteponemos @ a print para evitar mensajes de error en los valores vacíos |
$trozo4=explode("a",$a,3); @print $trozo4[0]; @print $trozo4[1]; @print $trozo4[2]; @print $trozo4[3]; @print $trozo4[4]; @print $trozo4[5]; |
Est c dena sera devuelta en trozos |
| implode(" ",$trozo1) | Esta cadena sera devuelta en trozos | |
| implode("*",$trozo2) | Est* c*den* ser* devuelt* en trozos | |
| implode("-",$trozo3) | Esta-cadena-sera devuelta en trozos | |
| implode(":",$trozo4) | Est: c:dena sera devuelta en trozos | |
| join(" ",$trozo1) | Esta cadena sera devuelta en trozos | |
| join("*",$trozo2) | Est* c*den* ser* devuelt* en trozos | |
| join("-",$trozo3) | Esta-cadena-sera devuelta en trozos | |
| join(":",$trozo4) | Est: c:dena sera devuelta en trozos | |
| $cadena="Esta cadena será dividida con la función strtok" | ||
|
$trocin = strtok ($cadena," "); while ($trocin) { echo "$trocin<br>"; $trocin = strtok (" "); } |
Esta cadena será dividida con la función strtok | |
|
$trocin = strtok ($cadena," "); echo $trocin,"<br>"; $trocin1 = strtok (" "); echo $trocin1,"<br>"; $trocin2 = strtok (" "); echo $trocin2,"<br>"; | Esta cadena Esta | |
|
$trocin = strtok ($cadena,"a"); while ($trocin) { echo "$trocin<br>"; $trocin = strtok ("a"); } |
Est c den será dividid con l función strtok | |
Encriptación de cadenas
PHP dispone de funciones que permiten codificar o encriptar cadenas de caracteres.
bin2hex(cadena)Devuelve una cadena ASCII que contiene la representación hexadecimal de la cadena. La conversión se realiza byte a byte, con los 4 bits superiores primero.
crypt(cadena)Devuelve la cadena encriptada utilizando una semilla aleatoria de dos caracteres. Por su caracter aleatorio, si se ejecuta dos veces seguidas –tal como puedes observar en el ejemplo– dará dos resultados diferentes.
crypt(cadena,"xx")Devuelve la cadena encriptada utilizando como semilla los dos caracteres (entre comillas) que se escriben como segundo parámetro de la función. Tanto en este supuesto como en el anterior, los dos primeros caracteres de la cadena encriptada coinciden con los que han sido utilizados como semilla.
md5(cadena)Aplica el algoritmo md5 y devuelve la huella digital generada por él. Este algoritmo presenta como peculiaridades que –tenga la dimensión que tenga la cadena a la que se aplique– genera siempre una huella digital que no es otra cosa que una cadena formada por 32 caracteres y que no dispone de ningún mecanismo inverso.
Seguramente habrás vivido esta experiencia. En muchos espacios de Internet –grupos de noticias, cuentas de correo web, etcétera– que requieren un login y una contraseña cuando utilizas la opción de recuperar contraseñas no te envían tu contraseña anterior, sino que te generan y envían una nueva.
Esto ocurre porque, por razones evidentes de seguridad, las contraseñas se almacenan usando estas huellas digitales y resulta imposible recuperar los valores originales.
La única solución en estos casos es crear una nueva contraseña (suelen hacerlo con las funciones de números aleatorios), enviarla de forma automática por correo electrónico y sustituir el valor anterior del registro de usuarios por el resultado de la codificación md5 de la nueva contraseña.
crc32(cadena)Aplica el algoritmo crc32 de comprobación de integridad y devuelve el valor del mismo. Se utiliza muchísimo en los programas de compresión y descompresión de ficheros. Se aplica en el momento de comprimir y se incluye el valor obtenido dentro del fichero comprimido. Después de la descompresión se vuelve a aplicar el mismo algoritmo y se comparan ambos valores. La coincidencia será la garantía de que el fichero obtenido es idéntico al original.
| Encriptaciones y codificaciones | ||
| Variable cadena | Sintaxis | Resultado |
| $a="Esta es la cadena" | bin2hex($a) | 45737461206573206c6120636164656e610a |
| $a="Encriptame" | crypt($a) | $1$qPAh7cii$me5qcM32b88n/JPSPnlwB0 |
| $a="Encriptame" | crypt($a) | $1$1Ddm6FRy$/Q3zoJ23kyEhztdjDCxJz0 |
| $a="Encriptame" | crypt($a,"zq") | zqQ4qOeELzPFg |
| $a="Encriptame" | crypt($a,"zq") | zqQ4qOeELzPFg |
| $a="Encriptame" | crypt($a,"@$") | @$MB08wYjH9to |
| $a="Encriptame" | md5($a) | 67c3ca0aefda2595138168a85e7b33a0 |
| $a="Encriptame" | md5($a) | 67c3ca0aefda2595138168a85e7b33a0 |
| $a="Encriptame" | crc32($a) | 3166777410 |
| Búsquedas y recuentos de caracteres | ||
| Variable cadena | Sintaxis | Resultado |
| $a="Contando caracteres" | count_chars($a,0) | Array |
| $a="Contando caracteres" | $b=count_chars($a,0); echo $b[97]; |
3 |
| $a="Contando caracteres" | $b=count_chars($a,0); echo $b[ord("o")] |
2 |
| $a="Pepe Perez el perverso pecador en penitencia" | substr_count($a,"Pe"); | 2 |
| $a="Pepe Perez el perverso pecador en penitencia" | substr_count($a,"pe"); | 4 |
La función count_char($a,0) devuelve un array cuyos índices son los códigos ASCII de los caracteres y cuyos valores son el número de veces que se repite cada uno de ellos.
La función substr_count($a,"cadena") determina el número de veces que aparece la cadena dentro de $a. Diferencia entre mayúsculas y minúsculas.