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 />";
?>
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"
?>

Vea también: [ Reemplazar usando expresiones regulares ] - [ str_replace() ] - [ str_ireplace() ] - [ strtr() ]
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]
?>
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]"
?>
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."]";
?>
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>";
?>

Vea también: [ Secuencias de escape ]
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>";
?>
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>";
?>

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