Funciones de string (1 de 2) PHP 5

Si ya conoce el lenguaje C, verá que las funciones de manejo de caracteres son muy parecidas en nombre y uso. En caso contrario, verá que son funciones de los más fáciles de utilizar, tan solo hace falta tener memoria y aprenderse el nombre y los argumentos que necesitan, ya que el manejo de cadenas es necesario en casi cualquier proyecto web, dicho esto, comenzamos.

Tamaño de la cadena
La función strlen( ) devuelve como resultado el tamaño en caracteres de la cadena que le pasamos como parámetro. Esta cadena puede asignarse a una variable como vemos en el ejemplo:
<?php 
 $cadena = "Alejandro Santiago";
 $caracteresCadena = strlen($cadena);
 echo "\$cadena tiene $caracteresCadena caracteres";
?>
La salida que devuelve el ejemplo es "$cadena tiene 18 caracteres".

Posición de los caracteres
Para crear buenos motores de búsqueda en nuestra web, necesitaremos potentes herramientas que sean capaces de buscar caracteres, cadenas o patrones coincidentes en un texto extenso. La función strpos( ) devuelve la posición de un carácter determinado.
<?php 
 $cadenaExtensa = "Esta cadena tiene muchos caracteres";
 $posicionA = strpos($cadenaExtensa, "a");
 $posicionM = strpos($cadenaExtensa, "m");
 
 echo "La primera ocurrencia de 'a' es en la posicion $posicionA <br />";
 echo "La primera ocurrencia de 'm' es en la posicion $posicionM";
?>
En la salida del programa se imprime que la primera ocurrencia de "a " es en la posición 3, ya que el índice de caracteres comienza desde 0, es decir, si utilizamos la función con el carácter "E", el programa devolvería que se encuentra en la posición 0.

En el caso de que la cadena no tenga ninguna ocurrencia del carácter en cuestión, strpos( ) devolverá false. A continuación puede ver un programa más completo que el anterior controlando si el carácter está presente en la cadena, y qué posición ocupa en caso de que así sea.
<?php 
 $cadenaExtensa = "Esta cadena tiene muchos caracteres";
 $posicionA = strpos($cadenaExtensa, "a");
 $posicionX = strpos($cadenaExtensa, "x");
 
 echo "La cadena a evaluar es: <b>" . $cadenaExtensa . "</b><br />";
 
 if($posicionA == true)
  echo "La cadena tiene el caracter 'a' en la posicion $posicionA<br/>";
 else
  echo "La cadena NO tiene el caracter 'a' <br />";
  
 if($posicionX == true)
  echo "La cadena tiene el caracter 'x' en la $posicionX";
 else
  echo "La cadena NO tiene el caracter 'x'";
?>
La función strpos( ) también puede utilizarse para buscar varios caracteres seguidos como por ejemplo "muchos", que en el ejemplo anterior la salida sería "18", ya que es la posición del primer carácter de la cadena.

Si lo que nos interesa es buscar ocurrencias desde el final de la cadena, la función que debemos utilizar es strrpos( ), a continuación veremos un ejemplo:
<?php 
 $cadenaExtensa = "Esta cadena tiene muchos caracteres";
 
 //Primera ocurrencia desde el principio de la cadena
 $ocurrencia1 = strpos($cadenaExtensa, "a");
 //Primera ocurrencia desde el final de la cadena
 $ocurrencia2 = strrpos($cadenaExtensa, "a");
 
 echo "\$ocurrencia1 es $ocurrencia1 y \$ocurrencia2 es $ocurrencia2";
?>

Comparación
El operador ( == ) nos puede servir para evaluar si dos cadenas son iguales dentro de una estructura de control. Además, tenemos la función strcmp( ) que compara bit a bit dos cadenas devolviendo los siguientes resultados:

  • Si el valor que se obtiene es 0, las cadenas son exactamente iguales.
  • Si el valor es un número negativo, el primer string es más pequeño que el segundo.
  • Si el valor es un número positivo, el primer string es más grande que el segundo.
A continuación veremos un ejemplo utilizando esta función cubriendo todos los casos posibles.
<?php 
 $cadena1 = "Hola";
 $cadena2 = "Hola";
 
 $evaluacion = strcmp($cadena1, $cadena2);
 
 if($evaluacion == 0)
  echo "Las cadenas son iguales";
 elseif($evaluacion < 0)
  echo "La primera cadena es menor que la segunda";
 else
  echo "La primera cadena es mayor que la segunda";
?>
Las variables evaluadas en el ejemplo anterior son iguales tanto en dimensiones, caracteres y mayúsculas o minúsculas, con esto podemos concluir que la salida del programa es "Las cadenas son iguales". En el caso de que el contenido de $cadena2 fuese "HolA", el resultado sería "La primera cadena es mayor que la segunda". Para que no ocurra esto, y dos cadenas sean evaluadas como iguales independientemente de si sus caracteres están en mayúsculas o minúsculas, debemos utilizar la función strcasecmp( ).

Búsqueda de caracteres
La función strstr( ), recibe como parámetros una cadena en la cual buscar y otra con un conjunto de caracteres que queremos encontrar. Si se encuentra el patrón buscado, el resultado de la función será una cadena que empezará en el primer carácter del patrón, y se prolongará hasta el final de la primera cadena. Si el patrón no se encuentra, la función devuelve false.
<?php 
 $cadena = "Este texto es considerablemente extenso";
 
 $busqueda = strstr($cadena, "es");
 
 if($busqueda)
  echo "El patron se encontro: $busqueda";
 else
  echo "El patron no existe dentro de la cadena";
?>
Como cabe esperar, la salida del ejemplo es: "El patron se encontro: es considerablemente extenso".

Funciones de string (2 de 2) PHP 5

Comentarios

Entradas populares de este blog

Ordenar cualquier array con SORT en JAVA

Modificadores de acceso (public, protected y private) JAVA

Calcular factorial de un numero en JAVA