Foros del Web » Programando para Internet » PHP »

¿Cómo reemplazar una palabra de un string?

Estas en el tema de ¿Cómo reemplazar una palabra de un string? en el foro de PHP en Foros del Web. Muy buenas. Tengo una cadena en la que quiero reemplazar una determinada palabra. He hecho un ejemplo para cambiar al por EL en una frase, ...
  #1 (permalink)  
Antiguo 17/05/2009, 08:31
 
Fecha de Ingreso: noviembre-2006
Mensajes: 166
Antigüedad: 17 años, 5 meses
Puntos: 4
¿Cómo reemplazar una palabra de un string?

Muy buenas.

Tengo una cadena en la que quiero reemplazar una determinada palabra.
He hecho un ejemplo para cambiar al por EL en una frase, pero de la forma en que lo he hecho me elimina las comas, puntos...

El código que tengo es este:
Código PHP:
<?php
echo eregi_replace('[^a-z]al[^a-z]'' EL '"en al algun al, dia al. palabra" );
?>
¿Cómo soluciono el problema?
  #2 (permalink)  
Antiguo 17/05/2009, 08:32
Avatar de Ryo
Ryo
 
Fecha de Ingreso: marzo-2008
Ubicación: Bilbao
Mensajes: 269
Antigüedad: 16 años, 1 mes
Puntos: 14
Respuesta: ¿Cómo reemplazar una palabra de un string?

Prueba con la función str_replace.
  #3 (permalink)  
Antiguo 17/05/2009, 08:38
 
Fecha de Ingreso: noviembre-2006
Mensajes: 166
Antigüedad: 17 años, 5 meses
Puntos: 4
Respuesta: ¿Cómo reemplazar una palabra de un string?

¿Y cómo lo hago con str_replace? ¿no se puede arreglar el que tengo yo cambiando el formato de las expresiones regulares?
  #4 (permalink)  
Antiguo 17/05/2009, 08:52
Avatar de Ryo
Ryo
 
Fecha de Ingreso: marzo-2008
Ubicación: Bilbao
Mensajes: 269
Antigüedad: 16 años, 1 mes
Puntos: 14
Respuesta: ¿Cómo reemplazar una palabra de un string?

str_replace es para cambiar un texto por otro dentro de un string, que es lo que necesitas en este caso.

Código PHP:
$texto str_replace"al""EL"$cadena_original ); 
El enlace que te había dejado te explica los usos de esta función y también explica lo siguiente:
Cita:
Si no precisa reglas especiales de sustitución (como por ejemplo expresiones regulares), deberá usar siempre esta función en lugar de ereg_replace() o preg_replace().
  #5 (permalink)  
Antiguo 17/05/2009, 08:59
 
Fecha de Ingreso: noviembre-2006
Mensajes: 166
Antigüedad: 17 años, 5 meses
Puntos: 4
Respuesta: ¿Cómo reemplazar una palabra de un string?

Gracias por dedicar tu tiempo Ryo, pero si no le pongo reglas, también me sustituirá textos que contengan al, como por ejemplo palabra, y eso es lo que no quiero.

Última edición por DarkKing; 17/05/2009 a las 09:00 Razón: -
  #6 (permalink)  
Antiguo 17/05/2009, 11:00
Avatar de Ryo
Ryo
 
Fecha de Ingreso: marzo-2008
Ubicación: Bilbao
Mensajes: 269
Antigüedad: 16 años, 1 mes
Puntos: 14
Respuesta: ¿Cómo reemplazar una palabra de un string?

Se puede jugar con la función según cómo se vayan a usar los textos, lo cual tú conocerás mejor que nadie. Por ejemplo, si sabes que los textos van a estar bien escritos, puedes usar dos veces la función:
Código PHP:
$texto str_replace" al "" EL "$cadena );
$final str_replace"Al ""EL "$texto ); 
Así sólo sustituirá "al" cuando sea una palabra intermedia (un espacio antes y después de "al") o cuando esté al comienzo de una frase, empezando por mayúscula y terminando en espacio porque acaba la palabra.

Otra opción sería añadir " al." por si termina en esta palabra, pero no tiene sentido que algo termine así.
  #7 (permalink)  
Antiguo 17/05/2009, 11:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: ¿Cómo reemplazar una palabra de un string?

O en dado caso usar str_ireplace para que no importe si es mayusculas o minusculas.

Saludo.s
  #8 (permalink)  
Antiguo 17/05/2009, 14:16
 
Fecha de Ingreso: noviembre-2006
Mensajes: 166
Antigüedad: 17 años, 5 meses
Puntos: 4
Respuesta: ¿Cómo reemplazar una palabra de un string?

gracias por las respuestas, pero sigo con el problema.
Lo que quiero es usar el ereg_replace para poner en negrita los resultados de una búsqueda. Entonces al lado de la palabra puede haber una coma, un punto, un interrogante... No puedo usar tantos eregi_replace como tantas posibilidades diferentes haya. Sería mucho lío.
  #9 (permalink)  
Antiguo 17/05/2009, 14:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: ¿Cómo reemplazar una palabra de un string?

Pues en ese caso ve bien como trabaja ereg_replace, y te recomendaria usar preg_replace ya que es más compatible a futuro.

Lee esto: http://www.forosdelweb.com/f18/aport...s-pcre-646110/
  #10 (permalink)  
Antiguo 17/05/2009, 15:30
 
Fecha de Ingreso: noviembre-2006
Mensajes: 166
Antigüedad: 17 años, 5 meses
Puntos: 4
Respuesta: ¿Cómo reemplazar una palabra de un string?

estas funciones con expresiones regulares las veo muy liosas.
Si no es pedir mucho, ¿alguien me puede poner la función ya lista para hacer lo que quiero?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:33.