Spanish (Español) translation by Ana Paulina Figueroa (you can also view the original English article)
Encontrar y reemplazar un fragmento de texto por otra cosa es una tarea muy común en muchas aplicaciones. También es necesario hacerlo con regularidad cuando trabajamos con texto en PHP. Por lo tanto, este tutorial se centrará en el reemplazo de una cadena por otra en PHP.
Reemplaza cadenas en PHP usando str_replace()
Al igual que muchas cosas, PHP también tiene una función incorporada que puedes usar para reemplazar cadenas en PHP. La función str_replace($search, $replace, $subject, $count) admite cuatro parámetros que determinan su comportamiento.
El primer parámetro es $search. Se usa para especificar las cadenas que estás buscando para poder reemplazarlas. Las cadenas que reemplazarán a la cadena original se especifican usando $replace. El parámetro $subject es la cadena principal, o pajar, dentro del cual llevarás a cabo todos tus reemplazos. El valor de $search y $replace puede ser un arreglo o una cadena.
Reemplaza una cadena por otra en PHP
Cuando solamente queremos reemplazar una sola cadena por otra cosa, simplemente podemos proporcionar un valor de cadena para $search y $replace.
1 |
<?php
|
2 |
|
3 |
$sentence = "Andrew prefers tea to coffee."; |
4 |
|
5 |
$search = "Andrew"; |
6 |
$replace = "Adam"; |
7 |
|
8 |
$new_sentence = str_replace($search, $replace, $sentence); |
9 |
|
10 |
// Adam prefers tea to coffee.
|
11 |
echo $new_sentence; |
12 |
|
13 |
?>
|
Reemplaza varias cadenas con una sola cadena
Como mencioné anteriormente, puedes especificar el valor de $search para que sea un arreglo. Si $replace es una sola cadena, entonces todos los valores del arreglo $search serán reemplazados por $replace en nuestra cadena principal.
1 |
<?php
|
2 |
|
3 |
$sentence = "There were 60 bananas and 12 oranges in the first basket. Some children ate 2 mangoes each."; |
4 |
|
5 |
$search = ["bananas", "mangoes"]; |
6 |
$replace = "apples"; |
7 |
|
8 |
$new_sentence = str_replace($search, $replace, $sentence); |
9 |
|
10 |
// There were 60 apples and 12 oranges in the first basket. Some children ate 2 apples each.
|
11 |
echo $new_sentence; |
12 |
|
13 |
?>
|
Elimina caracteres o subcadenas de una cadena
La eliminación de caracteres o subcadenas de una cadena es simplemente cuestión de establecer el valor de $replace para que sea una cadena vacía.
1 |
<?php
|
2 |
|
3 |
$sentence = "Andrew, Monty and Adam will be meeting at the club today."; |
4 |
|
5 |
$search = [", Monty"]; |
6 |
$replace = ""; |
7 |
|
8 |
$new_sentence = str_replace($search, $replace, $sentence); |
9 |
|
10 |
// Andrew and Adam will be meeting at the club today.
|
11 |
echo $new_sentence; |
12 |
|
13 |
?>
|
Reemplaza algunas subcadenas y eliminar otras de una cadena
Tanto $search como $replace pueden especificarse como arreglos. En este caso, el primer elemento de $search será reemplazado por el primer elemento de $replace, y así sucesivamente. En otras palabras, las subcadenas contenidas en $search serán reemplazadas por subcadenas contenidas en $replace en los índices correspondientes.
¿Qué ocurre si los arreglos $search y $replace tienen longitudes diferentes? Si $search tiene más elementos que $replace, entonces los elementos adicionales de $search serán reemplazados por una cadena vacía.
1 |
<?php
|
2 |
|
3 |
$sentence = "There were 60 bananas and 12 oranges in the first basket. Some children ate 2 mangoes each."; |
4 |
|
5 |
$search = ["bananas", "mangoes"]; |
6 |
$replace = ["apples"]; |
7 |
|
8 |
$new_sentence = str_replace($search, $replace, $sentence); |
9 |
|
10 |
// There were 60 apples and 12 oranges in the first basket. Some children ate 2 each.
|
11 |
echo $new_sentence; |
12 |
|
13 |
?>
|
Este ejemplo es muy similar al que escribimos anteriormente para reemplazar plátanos (bananas) y mangos (mangoes) por manzanas (apples). Esta vez, la única diferencia es que $replace ahora es un arreglo con un solo elemento. Sin embargo, esto da lugar a un resultado completamente diferente, ya que la cadena mangos (mangoes) ahora será reemplazada por una cadena vacía.
Conteo de la cantidad de reemplazos
Existe un cuarto parámetro que puedes enviar a str_replace(). El valor de este cuarto parámetro se establece de acuerdo a la cantidad de reemplazos realizados por str_replace(). Puede ser útil en diversas situaciones. Por ejemplo, si sabes de antemano cuántos reemplazos deberá llevar a cabo str_replace(), entonces puedes usar el valor establecido por str_replace() para verificar que no se hayan llevado a cabo reemplazos inesperados.
1 |
<?php
|
2 |
|
3 |
$sentence = "The house was filled with apples. There were apples in the fridge and there were apples on the dining table. |
4 |
There were multiple baskets of apples in the living room. We were eating apples for breakfast, lunch and dinner."; |
5 |
|
6 |
$search = "apples"; |
7 |
$replace = "mangoes"; |
8 |
$count = 0; |
9 |
|
10 |
$new_sentence = str_replace($search, $replace, $sentence, $count); |
11 |
|
12 |
// The house was filled with mangoes. There were mangoes in the fridge and there were mangoes on the dining table.
|
13 |
// There were multiple baskets of mangoes in the living room. We were eating mangoes for breakfast, lunch and dinner.
|
14 |
echo $new_sentence; |
15 |
|
16 |
// 5
|
17 |
echo $count; |
18 |
|
19 |
?>
|
Puntos importantes a tener en cuenta
Al igual que con muchas otras funciones, PHP viene con una versión de str_replace() que no distingue entre mayúsculas y minúsculas, y se llama str_ireplace(). Funciona igual que str_replace(), pero lleva a cabo los reemplazos de una manera que no distingue entre mayúsculas y minúsculas.
1 |
<?php
|
2 |
|
3 |
$sentence = "I ate one aPPle and he ate three Apples."; |
4 |
|
5 |
$search = "apple"; |
6 |
$replace = "banana"; |
7 |
|
8 |
$new_sentence = str_ireplace($search, $replace, $sentence); |
9 |
|
10 |
// I ate one banana and he ate three bananas.
|
11 |
echo $new_sentence; |
12 |
|
13 |
?>
|
Al usar str_replace(), asegúrate de que las cadenas que estés reemplazando no sean parte de palabras más largas. Esto puede ocasionar algunos resultados inesperados. Aquí puedes ver un ejemplo:
1 |
<?php
|
2 |
|
3 |
$sentence = "My nana was eating a banana."; |
4 |
|
5 |
$search = "nana"; |
6 |
$replace = "friend"; |
7 |
|
8 |
$new_sentence = str_replace($search, $replace, $sentence); |
9 |
|
10 |
// My friend was eating a bafriend.
|
11 |
echo $new_sentence; |
12 |
|
13 |
?>
|
Pensamientos finales
En este tutorial, hemos cubierto diferentes situaciones que pueden surgir al reemplazar cadenas en PHP. La función str_replace() es ideal para cualquiera de esos reemplazos básicos. Sin embargo, es importante tener cuidado con los valores que suministramos a los diferentes parámetros. De lo contrario obtendremos algunos resultados inesperados, como lo demostramos en los ejemplos. Deberías considerar el uso de la función preg_replace() para llevar a cabo reemplazos de cadenas más complicados.









