Sei sulla pagina 1di 26

Cadenas

Un string es una serie de caracteres, y por lo tanto, un caracter es lo mismo que un byte. Es decir, hay exactamente 256 diferentes caracteres posibles. Esto implica tambien que PHP no tiene soporte nativo para Unicode. Consulte utf8_encode() y utf8_decode() para informarse de la funcionalidad bsica de Unicode. Note: No existe problema alguno para que un string sea muy grande. PHP no impone ningn lmite para el tamao de un string; el nico lmite es la memoria disponible en el ordenador donde se est ejecutando PHP.

Sintaxis
Un string literal puede ser especificado de cuatro formas diferentes:

comillas simples comillas dobles sintaxis heredoc sintaxis nowdoc (desde PHP 5.3.0)

Comillas simples La manera ms sencilla de especificar un string es encerrarlo entre comillas simples (el caracter '). Para especificar una comilla simple literal, se escapa con una barra invertida (\). Para especificar una barra invertida literal, se duplica (\\). Todas las otras instancias de barras invertidas sern tratadas como una barra invertida literal: esto significa que otras secuencias de escape que se puedan utilizar, tales como\r or \n, sern mostradas literalmente como se especifican en lugar de tener cualquier significado especial Note: A diferencia de las sintaxis double-quoted y heredoc, las variables y las sentencias de escape para caracteres especiales no se expandirn cuando estn incluidas dentro de strings con comillas simples.

<?php echo 'Esto es una cadena sencilla'.'<br>'; echo 'Tambien puede incluir nuevas lneas en cadenas de esta forma ya que es correcto hacerlo as'.'<br>';

// Resultado: Arnold una vez dijo: "I'll be back" echo 'Arnold una vez dijo: "I\'ll be back"'.'<br>'; // Resultado: Ha borrado C:\*.*? echo 'Ha borrado C:\\*.*?'.'<br>'; // Resultado: Esto no se expandir: \n una nueva lnea echo 'Esto no se expandir: \n una nueva lnea, sin el uso del BR'."<br>"; // Resultado: Las variables $tampoco se $expandiran echo 'Las variables $tampoco se $expandiran'.'<br>Significa que no mostrara su valor'; ?>

Ver Resultado . chrbasic.php


Esto es una cadena sencilla Tambien puede incluir nuevas lneas en cadenas de esta forma ya que es correcto hacerlo as Arnold una vez dijo: "I'll be back" Ha borrado C:\*.*? Esto no se expandir: \n una nueva lnea, sin el uso del BR Las variables $tampoco se $expandiran Significa que no mostrara su valor
Comillas dobles Si un string est encerrado entre comillas dobles ("), PHP interpretar ms sentencias de escape como caracteres especiales:

Caracteres escapados Sentencia Significado avance de lnea (LF o 0x0A (10) en ASCII) retorno de carro (CR o 0x0D (13) en ASCII)

\n \r

Caracteres escapados Sentencia Significado tabulador horizontal (HT o 0x09 (9) en ASCII) tabulador vertical (VT o 0x0B (11) en ASCII) (desde PHP 5.2.5) avance de pgina (FF o 0x0C (12) en ASCII) (desde PHP 5.2.5) barra invertida signo del dlar comillas dobles la secuencia de caracteres que coincida con la expresin regular es un caracter en notacin octal la secuencia de caracteres que coincida con la expresin regular es

\t \v \f \\ \$ \" \[0-7]{1,3}

\x[0-9A-Fa-]{1,2} un caracter en notacin hexadecimal

Al igual que en la delimitacin de strings mediante comillas simples, escapar cualquier otro caracter puede dar lugar a que se muestre tambien la barra invertida. Antes de PHP 5.1.1, la barra invertida en \{$var} no se mostraba. La caracterstica ms importante de entrecomillar strings mediante comillas dobles es el hecho que los nombres de las variables son expandidos. Consulte string parsing para ms detalles. Ver tabla del 13 Anlisis de variables Cuando un string es especificado mediante comillas dobles, las variables dentro de dicha cadena son analizadas. Existen dos tipos de sintaxis: una simple y otra compleja. La sintaxis simple es la ms empleada y conveniente. Proporciona una forma de incluir una variable, un valor de un array o una propiedad de un object dentro de un string con el mnimo esfuerzo. La sintaxis compleja fue introducida en PHP 4, y puede ser reconocida por las llaves que encierran la expresin.
Sintaxis simple

Si se encuentra un signo de dlar ($), el analizador vidamente coger el mayor nmero de smbolos para formar un nombre de variable vlido. Encerrar el nombre de la variable entre llaves permite especificar explcitamente el final del nombre.
<?php $jugo = "manzana"; echo "El tom algo de jugo de $jugo.".PHP_EOL; echo "El tom algo de jugo hecho de $jugos."; // Invlido. "s" es un caracter v lido para un nombre de variable, pero la variable es $jugo. ?>

El resultado del ejemplo sera:


El tom algo de jugo de manzana. El tom algo de jugo hecho de .

De forma parecida, el ndice de un array o la propiedad de un object puede ser analizado. Con los ndices de los arrays, el corchete de cierre (]) marca el final del ndice. La misma regla se puede aplicar a las propiedades de los objetos y a las variables simples. Ejemplo de sintaxis simple <?php $jugos = array("manzana", "naranja", "koolaid1" => "prpura");
echo echo echo echo "El "El "El "El tom tom tom tom algo algo algo algo de de de de jugo jugo jugo jugo de $jugos[0].".PHP_EOL; de $jugos[1].".PHP_EOL; hecho de $jugo[0]s.".PHP_EOL;// No funcionar $jugos[koolaid1].".PHP_EOL;

class people { public $john = "John Smith"; public $jane = "Jane Smith"; public $robert = "Robert Paulsen"; public $smith = "Smith"; } $people = new people(); echo "$people->john tom algo de jugo de $jugos[0].".PHP_EOL; echo "$people->john entonces dijo hola a $people->jane.".PHP_EOL; echo "La esposa de $people->john's salud a $people->robert.".PHP_EOL; echo "$people->robert salud a los dos $people->smiths."; // No funcionar ?> El resultado del ejemplo sera: El tom algo de jugo de manzana. El tom algo de jugo de naranja. El tom algo de jugo hecho de s. El tom algo de jugo prpura. John Smith tom algo de jugo de manzana.

John Smith entonces dijo hola a Jane Smith. La esposa de John Smith's salud a Robert Paulsen. Robert Paulsen salud a los dos .

Para casos ms complejos se debe emplear la sintaxis compleja.

Funciones y operadores tiles


Los strings pueden ser concatenados empleando el operador '.' (punto). Fjese que el operador '+' (suma) no servir para concatenar. Consulte String operators para ms informacin. Hay una serie de funciones tiles para la manipulacin de string. Consulte la seccin de funciones de cadena para funciones generales, y las funciones de expresiones regulares o las funciones de expresiones regulares compatibles con Perl para funcionalidades avanzadas de bsqueda y sustitucin. Tambien existen funciones para cadenas URL, y funciones para encriptar/desencriptar cadenas (mcrypt y mhash). Finalmente, tambien existen las funciones para el tipo caracter.

Conversin a cadena
Un valor puede convertirse a una string mediante el forzado (string) o la funcin strval(). La conversin automtica a string tiene lugar en el contexto de una expresiin que necesita un string. Esto ocurre cuando se utilizan las funciones echo() o print(), o cuando una variables es comparada con un string. Las secciones sobre tipos y Manipulacin de tipos pueden ayudarle a enterderlo con ms claridad. Consulte tambien la funcin settype(). El valor TRUE del tipo boolean es convertido en el string "1". El valor FALSE del tipo boolean es convertido en el string "" (la cadena vaca). Esto permite la conversin en ambos sentidos entre los valores de los tipos boolean y string. Un integer o float es convertido en un string representando textualmente el nmero (incluyendo la parte exponencial para los floats. Los nmeros de punto flotante pueden ser convertidos mediante la notacin exponencial (4.1E+6). Note: El caracter para el punto decimal se define en el script de configuracin regional (categora LC_NUMERIC). Consulte la funcin setlocale().

Los arrays siempre se convierten en un string "Array". Debido a esto, tanto echo() y print() no pueden pos si mismo mostrar el contenido de un array. Para ver un elemento individualmente, utilice una construccin como echo $arr['foo']. Mire los trucos en la parte inferior para mostrar el contenido por completo. Los objects en PHP 4 siempre se convierten en un string "Object". Para mostrar los valores de las propiedades de un objeto para depuracin, mire los parrafos siguientes. Para obtener el nombre de la clase del objeto emple la funcin get_class(). A partir de PHP 5 se puede emplear el mtodo __toString. Los resources siempre se convierten en strings mediante la estructura "Resource id #1", donde 1 es el nmero nico asignado al resource por PHP en tiempo de ejecucin. No debe confiar en esta estructura, ya que est sujeto a cambios. Para obtener el tipo del resource emplee la funcin get_resource_type().
NULL siempre es convertido a una cadena vaca.

Como se ha indicada anteriormente, la conversin directa de un array, object o resource a un string no proporciona informacin til acerca del valor, ms alla de su tipo. Consulte las funciones print_r() y var_dump() para obtener maneras ms efectivas de inspeccionar el contenido de estos tipos. La mayora de los valores de PHP pueden ser convertidos a strings para su almacenamiento permanente. Este mtodo se denomina serializacin, y es realizado mediante la funcin serialize(). Si la mquina PHP est contruida con soporte de WDDX, los valores de PHP tambien pueden ser serializacos como texto XML correctamente formateado.

Conversin de cadenas a nmeros


Cuando una string es evaluada en un contexto numrico, el valor resultante y el tipo se determina como se explica a continuacin. Si el string no contiene ninguno de los caracteres '.', 'e', o 'E' y el valor numrico est entre los lmites del tipo entero (como se define en PHP_INT_MAX), lastring ser evaluada como un integer. En todos los demas casos ser evaluado como un float. El valor es dado por la parte inicial del string. Si el string empieza con un nmero vlido, ste ser el valor usado. De otra forma, el valor ser 0 (cero). Se considera nmero vlido a un sigo opcional, seguido de uno o mas digitos (opcionalmente puede contener un punto decimal), seguido de un exponente opcional El exponente es una 'e' o 'E' seguido de uno o ms dgitos.
<?php $foo = $foo = $foo = $foo = $foo =

1 1 1 1 1

+ + + + +

"10.5"; "-1.3e3"; "bob-1.3e3"; "bob3"; "10 Small Pigs";

// // // // //

$foo $foo $foo $foo $foo

es es es es es

float (11.5) float (-1299) integer (1) integer (1) integer (11)

$foo = 4 + "10.2 Little Piggies"; // $foo es float (14.2) $foo = "10.0 pigs " + 1; // $foo es float (11) $foo = "10.0 pigs " + 1.0; // $foo es float (11) ?>

Otra funcin PHP de caracteristicas muy similares a la anterior es la funcin sprintf(). La sintaxis es idntica sprintf(cadena de formato,variable1,variable2, ...) y la nica diferencia es que, mientras que printf() imprime las variables utilizando el formato indicado, sprintf() puede guardar en una variable la cadena resultante de la aplicacin del formato. VER Foo.php,

Las diferentes funciones que utiliza PHP para presentar informacin son estas...
echo
La funcin echo aunque admite echo() no requiere que su contenido vaya entre parntesis aunque lo admite. A continuacin de la instruccin echo pueden escribirse: variables, cadenas (estas entre comillas) y nmeros (sin comillas) separndolas mediante comas y finalizando con punto y coma. Este es un ejemplo de cdigo:

$a=24; $b="Pepe"; $c="<br>"; echo $a,$b,25, "Luis",$c;


que producira esta salida:

24Pepe25Luis
Observa que los valores que detrs de echo puede pasarse la informacin en varias lneas

print()
La funcin print() debe contener dentro del parntesis una sola variable, cadena o nmero. Aqu tienes algunos ejemplos: print(25.3) producira esta salida 25.3

print("Gonzalo") escribira Gonzalo $z=3.1416; print("$z") escribira 3.1416 Si tambin es posible utilizar dentro del parntesis el concatenador de cadenas . $h=3; $f=" hermanos" print("Heladeria ".$h.$f) escribira Heladeria 3 hermanos

Salidas con formato


Ni la funcin echo ni tampoco print permiten establecer una presentacin (formato) en sus salidas, la funcin printf() ofrece un montn de posibilidades en este sentido. Tanto la sintaxis como los valores de los diferentes parmetros las tienes resumidas? aqu a la derecha.

printf()
Aunque detallamos al margen las diferentes opciones de presentacin de informacin utilizando las funciones de PHP, aqu tienes un resumen de las opciones de la funcin.

Sintaxis printf(cadena de formato,variable1,variable2,..) Cadena de formato "%[relleno][alineacion][ancho][precision][tipo]" Carcter Valor Sintaxis Resultado 0 0 printf("%020d",32) 00000000000000000032 * '* printf("%'*20d",32) ******************32 1) espacio ' printf("%' 20d",32) 32 'printf("%'-20d",32) ------------------32 Observaciones Relleno Cuando se pretende rellenar con ceros, basta escribir el 0 inmediatamente detrs del signo % Si se trata de rellenar con un carcter distinto de cero, debe escribirse inmediatamente despus de% una comilla simple ' seguida del carcter de relleno.

Si se pretende rellenar con espacios forzados se puede escribir la comilla simple 'e inmediatamente despus teclear la combinacin ALT+0160 (carcter ASCII 160) usando el teclado numrico. Aunque obviamente no se visualiza el espacio, si se conserva tal como puede verse en el ejemplo 1) Obsrvese que como la tipografa es de ancho variable dependiendo del carcter que se use como relleno se modifica el ancho de la presentacin. Carcter Valor Sintaxis Resultado Ninguno Dcha printf("%020d",32) 00000000000000000032 Izda printf("%0-20d",32) 32 Ninguno Dcha printf("%'*20d",32) ******************32 Izda printf("%'*-20d",32) 32****************** Ninguno Dcha printf("%020s",32) 00000000000000000032 Izda printf("%0-20s",32) 32000000000000000000 Ninguno Dcha printf("%'*20s",32) ******************32 Izda printf("%'*-20s",32) 32****************** Alineacin Observaciones Fjate que en los cuatro primeros supuestos el identificador de tipo es d lo cual hace que considere la variable como numrica, mientras que en los cuatro ltimos ese valor es s con lo cual considera la variable como tipo cadena. Cuando tratamos de rellenar una variable nmericacon ceros por la derecha, PHP los omite para no alterar el valor numrico en la presentacin Con cualquier otro carcter de relleno (incluidos los caracteres numricos con ' delante) si efectua el relleno Carcter Valor Sintaxis Resultado Entero 14 printf("%'*14d",32) ************32 Entero 17 printf("%'*-17d",32) 32*************** Decimal 14.5 printf("%'*14.5d",32) ************32 Decimal 17.8 printf("%'*-17.8d",32) 32*************** Decimal 14.5 printf("%'*14.5f",32) ******32.00000 Decimal 11.8 printf("%'*-11.8f",32) 32.00000000 Observaciones El ancho (n de caracteres totales) puede especificarse mediante un nmero entero para todo tipo de variables Si se expresa mediante un nmero decimal y la variable es tipo coma flotante la parte decimal indica la precisin (n de cifras decimales) y la parte entera el ancho como nmero de caracteres de la parte entera o de la parte decimal segn se rellene a la derecha o a la izquierda. Tipo Valor Sintaxis Resultado Expresin binaria b printf("%'*14b",17) *********10001

Ancho

Tipo

de la variable Caracter correspondiente al cdigo ASCII indicado en la variable Entero presentado como decimal Doble precisin presentado como coma flotante Expresin octal de la variable Expresin hexadecimal de la variable Expresin hexadecimal de la variable Expresin como cadena de la variable

printf("%'*14c",97)

printf("%'*14d",17)

************17

printf("%'*14f",17)

*****17.000000

printf("%'*14o",17)

************21

printf("%'*14x",170)

************aa

printf("%'*14X",170)

************AA

printf("%'*14s",170)

***********170

Otras funciones con cadenas... Las diferentes funciones de manejo de cadenas de caracteres son estas:

chr(n)
Devuelve el carcter cuyo cdigo ASCII es n

10

ord(cadena)
Devuelve el cdigo ASCII del primer carcter de la cadena

strlen(cadena)
Devuelve la longitud (n de caracteres incluidos los espacios) de la cadena

strtolower(cadena)
Cambia los caracteres de la cadena aminsculas

strtoupper(cadena)
Convierte en maysculas todos los caracteres de la cadena

ucwords(cadena)
Convierte a maysculas la primer letra de cada palabra

ucfirst(cadena)
Convierte a maysculas la primer letra de la cadena y pone las restante en minsculas

ltrim(cadena)
Elimina los espacios al principio de la cadena

rtrim(cadena)
Elimina los espacios al final de la cadena

trim(cadena)
Elimina los espacios tanto al principio como al final de la cadena

chop(cadena)
Elimina los espacios al final de la cadena. Es un alias de rtrim. Advertencia Tanto trim, como ltrim y rtrim eliminan adems de los espacios los caracteres protegidos \n, \r, \t, \v y \0

11

substr(cadena,n)
Si el valor de n es positivo extrae todos los caracteres de la cadena a partir del que ocupa la posicin ensima a partir de la izquierda Si n es negativo extrae los n ltimos caracteres de la cadena

substr(cadena,n,m)
Si n y m son positivos extrae m caracteres a partir del que ocupa la posicin ensima contados de izquierda a derecha Si n es negativo y m es positivo extrae m (contados de izquierda a derecha) a partir del que ocupa la posicin ensima contada de derecha a izquierda Si n es positivo y m es negativo extrae la cadena comprendida entre el ensimo carcter (contados de izquierda a derecha) hasta el emsimo partir contado de derecha a izquierda Si n es negativo y m tambin es negativo extrae la cadena comprendida entre el emsimo y el ensimo caracteres contado de derecha a izquierda Si el valor absoluto de n es menor que el de m devuelve una cadena vacia.

strrev(cadena)
Devuelve la cadena invertida

str_repeat(cadena, n)
Devuelve la cadena repetida tantas veces como indica n. Estos son algunos ejemplos de aplicacin de las funciones de manejo de cadenas...
Cdigo ASCII y viceversa Funcin chr(cdigo ASCII) ord("cadena") Longitud y conversiones Funcin strlen("cadena") strtolower("cadena") strtoupper("cadena") ucwords("cadena") Sintaxis strlen("Mide la longitud de esta cadena") strtoupper("CONVIERTE A MINSCULAS") strtoupper("pasa a maysculas") ucwords("todas empiezan por mayscula") Resultado 31 convierte a minsculas PASA A MAYSCULAS Todas Empiezan Por Mayscula Sintaxis chr(97) ord("abadesa") Resultado a 97

12

ucfirst("cadena") Eliminando espacios Funcin ltrim("cadena") rtrim("cadena") trim("cadena") chop("cadena") Extraccin de subcadenas Funcin substr("cadena",n) substr("cadena",n) substr("cadena",n) substr("cadena",n) substr("cadena",n,m) substr("cadena",n,m) substr("cadena",n,m) substr("cadena",n,m) substr("cadena",n,m) substr("cadena",n,m) Modificaciones de cadenas Funcin strrev("cadena") str_repeat("cadena",n)

ucfirst("mayscula al principio")

Mayscula al principio Resultado Eliminar espacios Eliminar espacios Eliminar espacios Eliminar espacios Resultado rae caracteres Extrae caracteres teres es trae c Extrae c trae caracte acter ac

Sintaxis ltrim("\n \nEliminar espacios") rtrim("Eliminar espacios\n \n") trim("\n \nEliminar espacios\n \n") chop("\n \nEliminar espacios\n \n") Sintaxis substr("Extrae caracteres",3) substr("Extrae caracteres",0) substr("Extrae caracteres",-5) substr("Extrae caracteres",-2) substr("Extrae caracteres",2,6) substr("Extrae caracteres",0,8) substr("Extrae caracteres",2,-3) substr("Extrae caracteres",-7,5) substr("Extrae caracteres",-7,-5) substr("Extrae caracteres",-5,-7) Sintaxis strrev("Invierte la cadena") str_repeat("Rep",5)

Resultado anedac al etreivnI RepRepRepRepRep ******Pepe Pepe****** Papa Pepapa Luis PeLuise

str_pad("cadena",n,"Relleno",Tipo) str_pad("Pepe",10,"*",STR_PAD_BOTH) ***Pepe*** str_pad("cadena",n,"Relleno",Tipo) str_pad("Pepe",10,"*",STR_PAD_LEFT) str_pad("cadena",n,"Relleno",Tipo) str_pad("Pepe",10,"*") str_replace ("lo que dice",lo que dira,"Cadena") str_replace ("lo que dice",lo que dira,"Cadena") str_replace ("lo que dice",lo que dira,"Cadena") substr_replace ("Cadena",lo que dira,n,m) str_replace("e","a","Pepe") str_replace("pe","pa","Pepepe") str_replace("Pepe","Luis","Pepe") substr_replace("Pepe","Luis",2,-1) str_pad("cadena",n,"Relleno",Tipo) str_pad("Pepe",10,"*",STR_PAD_RIGHT) Pepe******

La funcin str_pad()... La sintaxis de la funcin str_pad() es la siguiente:

str_pad("cadena",n,"Relleno",tipo)
13

donde n es el nmero de caracteres de la cadena final (deber ser mayor que la longitud de la cadena inicial) siendo "Relleno" la cadena (uno o varios caracteres escritos entre comillas) con la que se pretende rellenar y tipo uno de estos tres valores (sin comillas): STR_PAD_BOTH (rellena por ambos lados), STR_PAD_RIGHT (coloca el relleno a la derecha de la cadena), o STR_PAD_LEFT (coloca el relleno a la izquierda de la cadena). Si se omite la cadena de relleno completar con espacios y si se omite el tipo rellenar por la derecha
********

Funciones de manejo de cadenas de caracteres complementarias.

AddSlashes(cadena)
Marca con el carcter b>\ delante los siguientes caracteres: ", ', \ y NUL(el bit nulo)

stripslashes(cadena)
Quita las marcas aadidas a una cadena con la funcin AddSlashes()

chunk_split(cad,n,sep)
Devuelve la cadena inicial (cad) dividida en trozos de n carcteres separados por la cadena indicada en sep. Si no se indica el sep PHP pondr un espacio y si no se establece el valor de n ser considerado como 76. Esta funcin coloca siempre un separador al final de la cadena.

parse_str(cadena)
Devuelve las variables indicadas dentro de la cadena (ver sintaxis del ejemplo). Dentro de la cadena cada variable se denomina con un nombre que se antepone al signo igual. Los espacios se sealan con el signo + y los separadores de variables son signos &

explode(sep,cad,n)
Devuelve un array cuyos elementos contienen las porciones de la cadena (cad) comprendidas entre los caracteres sealados como (sep) hasta el mximo de porciones sealadas (n). Los caracteres separadores son eliminados de las cadenas resultantes. Si no se indica el nmero de porciones, PHP fracciona en todas las necesarias. Si se indica, el ltimo trozo contendr el resto de la cadena hasta el final.

implode(sep,array)

14

Devuelve una cadena formada por todos los elementos del array separados por los caracteres indicados en la cadena sep.

join(sep,array)
Es una funcin idntica a implode

strtok(cadena,sep)
Esta funcin divide una cadena entrozos delimitados por el separador que se indica Cada cuando se invoca la primera vez debe llevar las sintaxis strtok(cadena,sep) y extrae el primer trozo. Al invocarla sucesivamente con la sintaxis strtok (" ") va recogiendo de forma secuencial los trozos sucesivos.

bin2hex(cadena)
Devuelve una cadena ASCII que contiene la representacin hexadecimal de la cadena. La conversin se realiza byte a byte, con los 4 bits superiores primero

crypt(cadena)
Devuelve la cadena encriptada utilizando una semilla aleatoria de dos caracteres.

crypt(cadena,"xx")
Devuelve la cadena encriptada utilizando como semilla los dos caracteres (entre comillas) escritos como segundo parmetro de la funcin. Tanto en este supuesto como en el anterior, los dos primeros caracteres de la cadena generada representan la semilla utilizada.

md5(cadena,"xx")
Aplica el algoritmo md5 y devuelve la huella digital generada por l.

crc32(cadena)
Aplica el algoritmo crc32 de comprobacin de integridad y devuelve el valor del mismo. Estos son algunos ejemplos en los que continuamos con las aplicaciones de las funciones PHP al manejo de cadenas... Marcas, divisiones y uniones de cadenas Variable cadena Sintaxis

Resultado

15

$a="Esta ' y \ y tambin NUL" $a=Esta \' y \\ y tambin NUL $a="Esta es una cadena larga que presuntamente ser troceada" $a="Esta es una cadena larga que presuntamente ser troceada"

AddSlashes($a) stripslashes($a)

Esta \' y \\ y tambin NUL Esta ' y \ y tambin NUL Esta -es un-a cad-ena l-arga -que presun-tamen-te se-r tr-ocead-a-

chunk_split($a,5,"-")

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 Esta es una cadena larga que cadena larga que chunk_split($a,76,"-") presuntamente presuntamente ser troceadaser 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; Esto sera una variable esto otra incluso un array

echo $p[0]; $a="Esta cadena sera devuelta en trozos" $trozo1=explode(" ",$a); Recoger en un echo $trozo1[0]; array cada uno de echo $trozo1[1]; los trozos echo $trozo1[2]; delimitados por echo $trozo1[3]; los separadores echo $trozo1[4]; echo $trozo1[5]; $trozo2=explode("a",$ a); Recoger en un echo $trozo2[0]; array cada uno de echo $trozo2[1]; los trozos echo $trozo2[2]; delimitados por echo $trozo2[3]; los separadores echo $trozo2[4]; echo $trozo2[5]; Recoger en un $trozo3=explode(" array cada uno de ",$a,3); los trozos echo $trozo3[0]; Esta cadena sera devuelta en trozos

Est c den ser devuelt en trozos Esta cadena sera devuelta en trozos

16

delimitados por los separadores hasta un mximo de 3 Recoger en un array cada uno de los trozos delimitados por los separadores hasta un mximo de 3 implode(" ",$trozo1)

echo $trozo3[1]; echo $trozo3[2]; echo $trozo3[3]; echo $trozo3[4]; echo $trozo3[5]; $trozo4=explode("a",$ a,3); Est echo $trozo4[0]; c echo $trozo4[1]; dena sera devuelta en trozos echo $trozo4[2]; echo $trozo4[3]; echo $trozo4[4]; echo $trozo4[5]; Esta cadena sera devuelta en trozos

implode("*",$troz Est* c*den* ser* devuelt* en trozos o2) implode("",$trozo3) Esta-cadena-sera devuelta en trozos

implode(":",$troz Est: c:dena sera devuelta en trozos o4) join(" ",$trozo1) join("*",$trozo2) join("-",$trozo3) Esta cadena sera devuelta en trozos Est* c*den* ser* devuelt* en trozos Esta-cadena-sera devuelta en trozos

join(":",$trozo4) Est: c:dena sera devuelta en trozos $cadena="Esta cadena ser dividida con la funcin strtok" $trocin = strtok ($cadena," "); while ($trocin) { echo "$trocin<br>"; $trocin = strtok (" "); } $trocin = strtok ($cadena," "); echo $trocin,"<br>"; $trocin1 = strtok (" "); echo $trocin1,"<br>"; $trocin2 = strtok (" "); echo $trocin2,"<br>"; $trocin3 = strtok (" "); $trocin = strtok ($cadena,"a"); Esta cadena ser dividida con la funcin strtok

Esta cadena Esta

Est

17

while ($trocin) { echo "$trocin<br>"; $trocin = strtok ("a"); } Encriptaciones y codificaciones Variable cadena Sintaxis $a="Esta es la cadena\n" bin2hex($a)

c den ser dividid con l funcin strtok Resultado 45737461206573206c6120636164656e610 a $1$l/b0AytD$QvmqbM/Mu5T.R7prDfk3 w. $1$2ZYksNXH$339t3FGcAMCMlDuPx PY1K0 zqQ4qOeELzPFg zqQ4qOeELzPFg @$MB08wYjH9to 67c3ca0aefda2595138168a85e7b33a0 67c3ca0aefda2595138168a85e7b33a0 3166777410 Resultado Array 3 2

$a="Encriptame" crypt($a) $a="Encriptame" crypt($a) $a="Encriptame" crypt($a,"zq") $a="Encriptame" crypt($a,"zq") $a="Encriptame" crypt($a,"@$") $a="Encriptame" md5($a) $a="Encriptame" md5($a) $a="Encriptame" crc32($a) Cuenta caracteres de una cadena Variable cadena Sintaxis $a="Contando caracteres" $a="Contando caracteres" $a="Contando caracteres" count_chars($a,0) $b=count_chars($a,0); echo $b[97] $b=count_chars($a,0); echo $b[ord("o")]

$a="Pepe Perez el perverso pecador substr_count($a,"Pe"); 2 en penitencia" $a="Pepe Perez el perverso pecador substr_count($a,"pe"); 4 en penitencia"

La funcion count_char($a,0) devuelve un array cuyos indices son los cdigos ASCII
de los caracteres y cuyos valores son el nmero de veces que se repite cada uno de ellos. Ver array_count.php La funcin substr_count($a,"cadena") determina el nmero de veces que aparece la cadena dentro de la variable (o cadena) $a. Diferencia entre maysculas y o minsculas
Ver cadena_bas.php

18

Estas son las ltimas funciones de manejo de cadenas.

levenshtein($A,$B)
Devuelve la distancia Levenshtein que se define como el mnimo nmero de caracteres que se tienen que sustituir, insertar o borrar para transformar $A en $B. Si una de las cadenas tiene una longitud superior a 255 caracteres devuelve -1.

similar_text($A,$B)
Esta funcin calcula la similitud entre dos cadenas segn se describe en Oliver [1993].Toma erudicin... Devuelve el nmero de caracteres coincidentes en ambas cadenas

strcasecmp($A,$B)
Segn he podido experimentar esta funcin compara cadenas sin diferencias maysculas de minsculas. Cuando coinciden devuelve CERO, cuando la primera cadena es mayor que la segunda devuelve un valor positivo y en el caso contrario devuelve un valor negativo, pero... cuando las cadenas son como las del experimento devuelve... qu devuelve?... sabes t el por qu del -79 del ejemplo?...

strcmp($A,$B)
Compara ambas cadenas discriminando entre maysculas y minsculas. Cuando son idnticas devuelve cero, en caso de no ser iguales devuelve +1 -1.

strnatcmp($A,$B)
Similar a la anterior. Parece que la nica diferencia es que esta funcin utiliza un algoritmo de orden natural.

strnatcasecmp($A,$B)
Similar a la anterior. Tambin utiliza un algoritmo de orden natural, pero en este caso no diferencia maysculas de minsculas.

strncmp($A,$B,n)
Similar a strcmp(). Discrimina maysculas de minsculas y solo compara los n primeros caracteres de ambas cadenas

strspn($A,$B)

19

Determina el nmero de caracteres (del comienzo de la cadena $A) que coinciden con alguno de los caracteres de la cadena $B. Discrimina entre maysculas y minsculas.

strcspn($A,$B)
Determina el nmero de caracteres (del comienzo de la cadena $A) que no coinciden con alguno de los caracteres de la cadena $B. Discrimina entre maysculas y minsculas.

strstr($A,$B)
Busca la subcadena $B dentro de la cadena $A y devuelve toda la cadena $A a partir de la primera aparicin de la subcadena $B. Es sensible a maysculas y minsculas.

strchr($A,$B)
Esta funcin es idntica a la anterior. Se trata de un alias de ella.

stristr($A,$B)
Idntica a la funcin anterior pero insensible a maysculas y minsculas.

strrchr($A,$B)
Busca la subcadena $B dentro de la cadena $A y devuelve toda la cadena $A a partir de la ltima aparicin de la subcadena $B. Es sensible a maysculas y minsculas.

strpos($A,$B)
Busca la subcadena $B dentro de la cadena $A y devuelve la posicin en la que se produce la primera aparicin de la subcadena $B. Es sensible a maysculas y minsculas.

strrpos($A,$B)
Busca la subcadena $B dentro de la cadena $A y devuelve la posicin en la que se produce la ltima aparicin de la subcadena $B. Es sensible a maysculas y minsculas. Aqu tienes ejemplos en los que continuamos con las aplicaciones de las funciones PHP al manejo de cadenas...

20

Comparacin de cadenas Cadenas $A="ABCDEFG" $B="abcdefg" $A="ABCDEFG" $B="GFEDCBA" $A="AsCefgh" $B="AcCeFhg" $A="asCefgh" $B="AcCfFhgedh" $A="Esta Cadena tiene miga" $B="Esta Cadena Tiene Miga" $A="Esta Cadena tiene miga" $B="Esta Cadena Tiene" $A="Esta Cadena Tiene" $B="Esta Cadena tiene miga" $A="Probemos ahora as" $B="Qu resultar de esto?" $A="Esta Cadena tiene miga" $B="Esta Cadena Tiene Miga" $A="Esta Cadena tiene miga" $B="Esta Cadena Tiene" $A="Esta Cadena Tiene" $B="Esta Cadena tiene miga" $A="Probemos ahora as" $B="Qu resultar de esto?" $A="Si son exactamente iguales" $B="Si son exactamente iguales" $A="Esta Cadena tiene miga" $B="Esta Cadena Tiene Miga" $A="Esta Cadena tiene miga" $B="Esta Cadena Tiene" $A="Esta Cadena Tiene" $B="Esta Cadena tiene miga" $A="Probemos ahora as"

Sintaxis similar_text($A,$B) similar_text($A,$B) similar_text($A,$B) similar_text($A,$B) strcasecmp($A,$B) strcasecmp($A,$B) strcasecmp($A,$B) strcasecmp($A,$B) strcmp($A,$B) strcmp($A,$B) strcmp($A,$B) strcmp($A,$B) strcmp($A,$B) strnatcmp($A,$B) strnatcmp($A,$B) strnatcmp($A,$B) strnatcmp($A,$B)

Resultado 0 1 4 3 0 5 -5 -79 1 1 -1 -1 0 1 1 -1 -1

21

$B="Qu resultar de esto?" $A="Si son exactamente iguales" $B="Si son exactamente iguales" $A="Esta Cadena tiene miga" $B="Esta Cadena Tiene Miga" $A="Esta Cadena tiene miga" $B="Esta Cadena Tiene" $A="Esta Cadena Tiene" $B="Esta Cadena tiene miga" $A="Probemos ahora as" $B="Qu resultar de esto?" $A="Si son exactamente iguales" $B="Si son exactamente iguales" $A="Una cadena de prueba" $B="Un posible experimento" $A="Una cadena de prueba" $B="Un posible experimento" Bsquedas de subcadenas Cadenas $A="Una cadena de prueba" $B="abcdeu" $A="Una cadena de prueba" $B="abcdeU" $A="123.45789 Una cadena de prueba" $B="1234567890." $A="Una cadena de prueba" $B="abcdeu" $A="Una cadena de prueba" $B="abcdeU" $A="123.45789 Una cadena de prueba" $B="1234567890." $A="Una cadena de prueba" $B="c" strstr($A,$B) cadena de prueba strcspn($A,$B) strcspn($A,$B) 2 0 strnatcmp($A,$B) 0

strnatcasecmp($A,$B) 0 strnatcasecmp($A,$B) 1 strnatcasecmp($A,$B) -1 strnatcasecmp($A,$B) -1 strnatcasecmp($A,$B) 0 strncmp($A,$B,2) strncmp($A,$B,4) 0 1

Sintaxis strspn($A,$B) strspn($A,$B)

Resultado 0 1

strspn($A,$B)

strcspn($A,$B)

22

$A="Una cadena de prueba" $B="C" $A="Una cadena de prueba" $B="ena" $A="Una cadena de prueba" $B="c" $A="Una cadena de prueba" $B="C" $A="Una cadena de prueba" $B="ena" $A="Una cadena de prueba" $B="d" $A="Una cadena de prueba" $B="D" $A="Una cadena de prueba" $B="eNA" $A="Una cadena de prueba" $B="NA" $A="Una cadena de prueba" $B="na" $A="Una cadena de prueba" $B="NA" $A="Una cadena de prueba" $B="na" $A="Una cadena de prueba" $B="NA" $A="Una cadena de prueba" $B="na"

strstr($A,$B) strstr($A,$B) strchr($A,$B) strchr($A,$B) strchr($A,$B) stristr($A,$B) stristr($A,$B) stristr($A,$B) strrchr($A,$B) strrchr($A,$B) strpos($A,$B) strpos($A,$B) strrpos($A,$B) strrpos($A,$B) 8 1 na de prueba ena de prueba dena de prueba dena de prueba ena de prueba ena de prueba cadena de prueba

Concluiremos el estudio de las funciones de cadena en la prxima pgina. All veremos el manejo de las etiquetas HTML. Animo... ya falta poco...!!

Funciones de strings

addcslashes Escapa una cadena de la misma forma que lo hace C addslashes Aade barras invertidas a una cadena bin2hex Convierte datos binarios en su representacin hexadecimal

23

chop Alias de rtrim chr Devuelve un caracter especfico chunk_split Divide una cadena en trozos ms pequeos convert_cyr_string Convierte de un juego de caracteres cirlico a otro juego de caracteres cirlico convert_uudecode Descodifica una cadena codificada mediante uuencode convert_uuencode Codifica, mediante uuencode, una cadena count_chars Devuelve informacin sobre los caracteres usados en una cadena crc32 Calcula el polinomio crc32 de una cadena crypt Hashing de una sola va de un string echo Muestra una o ms cadenas explode Divide una cadena en varias cadenas fprintf Escribir una cadena con formato a una secuencia get_html_translation_table Devuelve la tabla de traduccin utilizada por htmlspecialchars y htmlentities hebrev Convierte texto hebreo lgico a texto visual hebrevc Convertir texto de hebreo lgico a texto visual con conversin de lnea nueva html_entity_decode Convierte todas las entidades HTML a sus caracteres correspondientes htmlentities Convierte todos los caracteres aplicables a entidades HTML htmlspecialchars_decode Convierte entidades HTML especiales de nuevo en caracteres htmlspecialchars Convierte caracteres especiales en entidades HTML implode Une elementos de un array en una cadena join Alias de implode lcfirst Pasa a minscula el primer caracter de un string levenshtein Clculo de la distancia Levenshtein entre dos strings localeconv Obtener informacin sobre el formato numrico ltrim Retira espacios en blanco (u otros caracteres) del inicio de un string md5_file Calcula el resumen criptogrfico md5 de un archivo dado md5 Calcula el hash md5 de un string metaphone Calcula la clave metaphone de un string money_format Da formato a un nmero como un string de moneda nl_langinfo Consulta informacin sobre el idioma y la configuracin regional nl2br Inserta saltos de lnea HTML antes de todas las nuevas lneas en un string number_format Formatear un nmero con los miles agrupados ord devuelve el valor ASCII de una caracter parse_str Interpreta el string en variables print Mostrar una cadena printf Imprimir una cadena con formato quoted_printable_decode Convierte un string quoted-printable en un string de 8 bits quoted_printable_encode Convierte un string de 8 bits en un string quoted-printable quotemeta Escapa meta caracteres

24

rtrim Retira los espacios en blanco (u otros caracteres) del final de un string setlocale Establece la informacin de configuracin regional sha1_file Calcula el hash sha1 de un archivo sha1 Calcula el hash sha1 de un string similar_text Calcula la similitud entre dos strings soundex Calcula la clave soundex de un string sprintf Devuelve un string formateado sscanf Interpreta un string de entrada de acuerdo con un formato str_getcsv Interpreta un string de CSV en un array str_ireplace Versin insensible a maysculas y minsculas de str_replace str_pad Rellena un string hasta una longitud determinada con otro string str_repeat Repite un string str_replace Reemplaza todas las apariciones del string buscado con el string de reemplazo str_rot13 Realizar la transformacin rot13 sobre una cadena str_shuffle Reordena aleatoriamente una cadena str_split Convierte un string en un array str_word_count Devuelve informacin sobre las palabras utilizadas en un string strcasecmp Comparacin de string segura a nivel binario e insensible a maysculas y minsculas strchr Alias de strstr strcmp Comparacin de string segura a nivel binario strcoll Comparacin de cadenas basada en la localidad strcspn Encuentra la longitud del segmento inicial que no coincida con la mscara strip_tags Retira las etiquetas HTML y PHP de un string stripcslashes Desmarca la cadena marcada con addcslashes stripos Encuentra la posicin de la primera aparicin de un string insensible a maysculas y minsculas stripslashes Quita las barras de un string con comillas escapadas stristr strstr insensible a maysculas y minsculas strlen Obtiene la longitud de una cadena strnatcasecmp Comparacin de strings, insensible a maysculas y minsculas, utilizando un algoritmo de "orden natural" strnatcmp Comparacin de strings utilizando un algoritmo de "orden natural" strncasecmp Comparacin de los primeros n caracteres de cadenas, segura con material binario e insensible a maysculas y minsculas strncmp Comparacin segura a nivel binario de los primeros n caracteres entre strings strpbrk Buscar una cadena por cualquiera de los elementos de un conjunto de caracteres strpos Busca la posicin de la primera ocurrencia de una cadena strrchr Encuentra la ltima aparicin de un caracter en un string strrev Invierte una string strripos Encuentra la posicin de la ltima aparicin de un string insensible a maysculas y minsculas en un string

25

strrpos Encuentra la posicin de la ltima aparicin de un substring en un string strspn Encuentra la longitud del segmento inicial de un string que consista nicamente en caracteres contenidos dentro de una mscara dada. strstr Buscar la primera aparicin de una cadena strtok Tokeniza string strtolower Convierte una cadena a minsculas strtoupper Convierte un string a maysculas strtr Traduce ciertos caracteres o reemplaza substrings substr_compare Comparacin segura a nivel binario de dos o ms strings desde un desplazamiento, hasta una longitud de caracteres substr_count Cuenta el nmero de apariciones del substring substr_replace Reemplaza el texto dentro de una porcin de un string substr Devuelve parte de una cadena trim Elimina espacio en blanco (u otro tipo de caracteres) del inicio y el final de la cadena ucfirst Convierte el primer caracter de una cadena a maysculas ucwords Convierte a maysculas el primer caracter de cada palabra en una cadena vfprintf Escribe un string con formato en un flujo vprintf Muestra una cadena con formato vsprintf Devuelve una cadena con formato wordwrap Ajusta un string hasta un nmero dado de caracteres

Funciones de Ctype

ctype_alnum Chequear posibles caracteres alfanumricos ctype_alpha Chequear posibles caracteres alfabticos ctype_cntrl Chequear posibles caracteres de control ctype_digit Chequear posibles caracteres numricos ctype_graph Chequear posibles caracteres imprimibles, con excepcin de los espacios ctype_lower Chequear posibles caracteres en minscula ctype_print Chequear posibles caracteres imprimibles ctype_punct Chequear posibles caracteres imprimibles que no son ni espacios en blanco ni caracteres alfanumricos ctype_space Chequear posibles caracteres de espacio en blanco ctype_upper Chequear posibles caracteres en mayscula ctype_xdigit Chequear posibles caracteres que representen un dgito hexadecimal

Ver Chunk .

26

Potrebbero piacerti anche