Guía y comprobaciones
Elige según la regla de búsqueda
Si conoces el texto exacto, empieza por str_replace. Si buscas una forma, como espacios repetidos o un código con dígitos, una expresión regular puede describirla. Si tienes un mapa de fragmentos y no quieres que el resultado vuelva a transformarse dentro de la misma pasada, estudia strtr.
$texto = 'AB';
echo str_replace(['A', 'B'], ['B', 'C'], $texto), PHP_EOL; // CC
echo strtr($texto, ['A' => 'B', 'B' => 'C']), PHP_EOL; // BC
El primer resultado pasa por dos reemplazos sucesivos: después de convertir A en B, la siguiente sustitución también encuentra esa nueva B. El mapa de strtr no vuelve a procesar el texto que acaba de insertar. Esta diferencia importa al cambiar marcadores de una plantilla o abreviaturas.
Cuándo tiene sentido un patrón
Un patrón puede expresar «uno o más espacios o tabuladores», algo diferente de buscar la cadena de un solo espacio. Mantén el patrón fijo si la regla pertenece al programa.
$linea = "uno dos\ttres";
$normalizada = preg_replace('/[ \t]+/', ' ', $linea);
if ($normalizada === null) {
throw new RuntimeException('Patrón no válido');
}
echo $normalizada, PHP_EOL; // uno dos tres
No pongas una búsqueda del usuario directamente dentro de una expresión regular. Si sólo desea buscar texto, una función literal evita que caracteres como . o [ adquieran otro significado. Si necesitas incluir un fragmento literal dentro de un patrón controlado, consulta preg_quote y el delimitador utilizado.
Reemplazar no equivale a escapar
Quitar palabras como script no es una defensa para HTML. Tampoco hay que escapar SQL con una lista de sustituciones: usa consultas parametrizadas. El texto transformado debe codificarse o escaparse al entrar en su contexto de salida. En una plantilla, procura utilizar marcadores inequívocos y comprobar que no queden marcadores sin resolver; un reemplazo silencioso puede dejar una pantalla aparentemente válida con datos incompletos.
Preguntas frecuentes
¿strtr y str_replace siempre dan el mismo resultado?
No. Un mapa de strtr no vuelve a reemplazar lo insertado; las sustituciones sucesivas de str_replace pueden encadenarse.
¿Necesito expresiones regulares para cambiar una palabra?
No si buscas una cadena literal. Un patrón se justifica cuando la condición depende de una forma o estructura.
Continúa con una guía relacionada
Documentación oficial
Fuentes consultadas
Fuentes y referencias
Consulta referencias útiles para ampliar o contrastar esta guía.
Siguiente lectura
Guias relacionadas para continuar
Si quieres seguir con el mismo tema, aqui tienes paginas cercanas que amplian la tecnica, comparan variantes o te llevan a la siguiente rutina.