informaticaPC

Tutorial de PHP

Reemplazar y extraer texto en una cadena, escapar caracteres, secuencias de escape...


Regístrate

Tus datos no serán compartidos, solo nosotros te enviaremos información y novedades

Reemplazar parte de una cadena

Si necesitamos reemplazar parte de una cadena de texto con otra disponemos de las funciones de PHP str_replace() (realiza la búsqueda diferenciando entre mayúsculas y minúsculas) y str_ireplace() (no distingue entre mayúsculas y minúsculas), que reemplazarán todas las ocurrencias encontradas devolviéndonos una nueva cadena de texto con las modificaciones realizadas.

En ambas funciones la cadena buscada será reemplazada todas las veces que sea encontrada.

Si como cuarto parámetro ponemos una variable, quedará almacenado en ella el número de modificaciones realizadas (implementado desde la versión de PHP 5.0.0).

<?php
    $cadena1 = "Curso de PHP - en este curso de PHP aprenderemos a programar en php";
    $reemplazos1 = 0;
    $reemplazos2 = 0;
    $reemplazos3 = 0;
    $reemplazos4 = 0;

    $cadena2 = str_replace( "php", "JavaScript", $cadena1, $reemplazos1 );
    $cadena3 = str_replace( array("php", "este"), "JavaScript", $cadena1, $reemplazos2 );
    $cadena4 = str_ireplace( "php", "JavaScript", $cadena1, $reemplazos3 );
    $cadena5 = str_ireplace( array("php", "este"), "JavaScript", $cadena1, $reemplazos4 );

    // Devuelve: "(1) reemplazos en : Curso de PHP - en este curso de PHP aprenderemos a programar en JavaScript"
    echo "(".$reemplazos1.") reemplazos en : ".$cadena2."<br />";

    // Devuelve: "(2) reemplazos en : Curso de PHP - en JavaScript curso de PHP aprenderemos a programar en JavaScript"
    echo "(".$reemplazos2.") reemplazos en : ".$cadena3."<br />";

    // Devuelve: "(3) reemplazos en : Curso de JavaScript - en este curso de JavaScript aprenderemos a programar en JavaScript"
    echo "(".$reemplazos3.") reemplazos en : ".$cadena4."<br />";

    // Devuelve: "(4) reemplazos en : Curso de JavaScript - en JavaScript curso de JavaScript aprenderemos a programar en JavaScript"
    echo "(".$reemplazos4.") reemplazos en : ".$cadena5."<br />";
?>

Descargar ejemplo

Como primer parámetro es posible también pasar un array con varios textos.

Otra función que nos resultará útil es strtr(), que sustituirá en la cadena de texto pasada como primer parámetro cada caracter encontrado en la cadena especificada como segundo parámetro, por el carácter en la misma posición dentro de la cadena pasada como tercer parámetro:

<?php
    $cadena1 = "Curso de PHP - en este curso de PHP aprenderemos a programar en php";

    $cadena2 = strtr( $cadena1, "CeP", "Dép" );

    echo $cadena2;  // Devuelve: "Durso dé pHp - én ésté curso dé pHp apréndérémos a programar én php"
?>

Descargar ejemplo

Extraer parte de una cadena

Para extraer parte de una cadena en PHP usaremos la función de PHP substr(), indicando como primer parámetro la cadena de texto en la que se realizará la búsqueda, y como segundo y tercer parámetros las posiciones inicial y final de la subcadena a extraer.

Si no se indica el tercer parámetro se extraerá el resto de la cadena, a partir de la posición inicial indicada:

<?php
    $cadena = "Aprendiendo a programar en PHP";

    echo "[".substr( $cadena, 14  )."]<br />";	 // Devuelve [programar en PHP]
    echo "[".substr( $cadena, 14, 12 )."]";		// Devuelve [programar en]
?>

Descargar ejemplo

En caso de que la posición o índice inicial sea negativo, la cadena de texto se comenzará a extraer desde el final:

<?php
    $cadena = "Aprendiendo a programar en PHP";

    echo "[".substr( $cadena, -1  )."]<br />";	   // Devuelve: "[P]"
    echo "[".substr( $cadena, -3, 1 )."]<br />";   // Devuelve: "[P]"
    echo "[".substr( $cadena, -3, -2 )."]<br />";  // Devuelve: "[P]"
    echo "[".substr( $cadena, -3, -1 )."]<br />";  // Devuelve: "[PH]"
    echo "[".substr( $cadena, -3, 2 )."]<br />";   // Devuelve: "[PH]"
    echo "[".substr( $cadena, -3 )."]<br />";	   // Devuelve: "[PHP]"
?>

Descargar ejemplo

Por otro lado, si lo que deseamos es obtener parte de la cadena principal (en caso de que contenga la subcadena que buscamos) disponemos de las funciones strstr() (diferencia entre mayúsculas y minúsculas) y stristr() (no hace diferencia entre mayúsculas y minúsculas).

NOTA: a partir de la versión de PHP 5.3.0 si indicamos 'true' como tercer parámetro en dichas funciones, devolverán el resto de la cadena hacia la izquierda (a partir de la posición en que se encuentra la cadena buscada, si ha sido encontrada). En otro caso se devolverá el resto de la cadena hacia la derecha (incluída la cadena buscada).

A continuación te mostramos un ejemplo:

<?php
    $cadena = "Aprendiendo a programar en PHP";

    $c1 = stristr( $cadena, "pro" );
    $c2 = stristr( $cadena, "pro", true );   // El tercer parámetro funciona desde PHP 5.3.0

    // Devuelve: "$c1 = [programar en PHP]":
    echo "c1 = [".$c1."]<br />";

    // Devuelve: "$c2 = [Aprendiendo a ]":
    echo "c2 = [".$c2."]";
?>

Descargar ejemplo

Más información

Vea también: [ substr() ] - [ strstr() ] - [ stristr() ]

Secuencias de escape

En PHP hay determinados caracteres especiales que podemos insertar en las cadenas de texto usando la barra inversa o 'backslash'.

  • \': comilla simple.
  • \": comilla doble.
  • \\: barra inversa o 'backslash'.
  • \f: avance de página.
  • \r: inserta un retorno de carro.
  • \n: inserta una nueva línea.
  • \t: tabulador.

A continuación puedes ver un ejemplo en el que mostramos un texto usando la etiqueta HTML <pre> (que mantiene el formato del texto):

<?php
    echo "<pre>";
    echo "En \"PHP\" podemos insertar\n \"caracteres \tespeciales\" escapándolos con una\nbarra inversa \"\\\"";
    echo "</pre>";
?>

Descargar ejemplo

Secuencias de escape

Más información

Vea también: [ Secuencias de escape ]

Escapar caracteres en una cadena de texto

Usaremos la función addslashes() para escapar los caracteres especiales que necesiten serlo en una cadena de texto (añadiendo una barra inversa antes de cada uno de ellos), como son la comilla simple, comilla doble, barra inversa, etc.

Con stripslahes() se eliminan las barras de una cadena de texto con comillas escapadas.

<?php
    $cadena = "Curso de 'PHP'\n en\t - escapar la barra inversa (\)";
    $cadena_escapada = addslashes( $cadena );

    echo "<pre>";
    echo $cadena_escapada."<p/>";
    echo stripslashes( $cadena_escapada )."<p />";
    echo "</pre>";
?>

Descargar ejemplo

Escapar caracteres

También podemos usar la función addcslashes() si necesitamos escapar determinados caracteres, los cuales especificaremos en el segundo parámetro de la misma.

Asimismo con stripcslashes() podremos eliminar las barras inversas insertadas por addcslashes() al escapar los caracteres.

En el siguiente ejemplo escapamos únicamente las comillas simples y las letras 'o' que haya en la cadena de texto. Ambas funciones ignoran las secuencias de escape \n y \t (así como cualquier otra usada en lenguaje C):

<?php
    $cadena = "Curso de 'PHP'\n en\t aprender-informatica.com";
    $cadena_escapada = addcslashes( $cadena, "o'" );

    echo "<pre>";
    echo $cadena_escapada."<p/>";
    echo stripcslashes( $cadena_escapada )."<p />";
    echo "</pre>";
?>

Descargar ejemplo

Escapar caracteres

Más información

Vea también: [ addslashes() ] - [ stripslashes() ] - [ addcslashes() ] - [ stripcslashes() ]

Primera página Anterior Siguiente Última página
Usamos cookies para ofrecerte una experiencia mejorada, el continuar navegando supone que aceptas su uso