Foros del Web » Programando para Internet » PHP »

Problemas con palabras... buscar textos y reemplazar

Estas en el tema de Problemas con palabras... buscar textos y reemplazar en el foro de PHP en Foros del Web. Hola!!! tengo el siguiente problema: Cómo hacer para resaltar una palabra o varias??? esta fue mi duda al inicio... estube revisando el manual (cosa que ...
  #1 (permalink)  
Antiguo 09/05/2007, 08:37
 
Fecha de Ingreso: marzo-2007
Mensajes: 29
Antigüedad: 17 años
Puntos: 0
Problemas con palabras... buscar textos y reemplazar

Hola!!! tengo el siguiente problema:

Cómo hacer para resaltar una palabra o varias??? esta fue mi duda al inicio... estube revisando el manual (cosa que me da un sueñooooooo) y encontré algo que me pareció lo ideal... lo implementé y sí... al parecer me servía; pero el problema me vino cuando... les pondré el código y luego les explico... vale???

MI CÓDIGO!!!
************************************************** *******
<?php
$parrafo = "La ciudad de Camagüey fue fundada en 1514 y contiene un rico potencial de valores históricos, arquitectónicos, urbanísticos y ambientales. Tiene una trama urbana muy característica de calles estrechas y tortuosas que se abren a plazas y plazuelas de grandes valores espaciales.

Los Camagüeyanos estuvieron entre los primeros organizadores del movimiento insurrecional que estalló el 10 de Octubre de 1868 en Camagüey.

La provincia de Camagüey se encuentra ubicada en la región centro este del país, limita al norte con el canal viejo de las Bahamas, al sur con el mar Caribe, al este con la provincia de las Tunas y al oeste con la provincia de Ciego de Ávila. Cuenta con una extensión territorial de 15 989 km², 14 158 km² corresponden a tierra firme y 1 831 km² a cayos del archipiélago del norte y el sur de la Isla principal. Ocupa el 13.2 % del territorio nacional siendo la más extensa del país.
";
$indices = array("Camagüey", "ciudad de Camagüey", "provincia de Camagüey");

while( $buscada = array_shift($indices) ){
$parrafo_result = str_replace($buscada, "<a href=\"#\">".$buscada."</a>", $parrafo);

$parrafo = $parrafo_result;
}

echo nl2br($parrafo_result);
?>

************************************************** *******
Bueno... ahora me será más fácil explicar: miren; la cosa es que necesito me resalte lo que tengo en el arreglo y no me lo hace... solo me resalta la palabra "Camagüey" pero cuando aparece "ciudad de Camagüey" o "provincia de Camagüey" no me coge "ciudad de" ni "provincia de" solo la palabra "Camagüey"... otra cosa que me hace es que en la palabra "Camagüeyanos" me resalta "Camagüey"anos... nesecito me ayuden a resolver el temita este... de ante mano le agradezco a todo el que me tire una mano.

Saludos, Dadier.
  #2 (permalink)  
Antiguo 09/05/2007, 09:58
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Re: Problemas con palabras... buscar textos y reemplazar

Lo que sucede es que al aplicar el primer cambio Camagüey con enlace, se cambio todas esas palabras en el texto, es decir "ciudad de <a>Camagüey</a> " me entiendes , y tu quieres reemplazar ciudad de Camagüey y esa palabra ya no esta ( ya que la reeplazaste antes por los <a> y la palabra).

Lo que puedes hacer es ir aplicando str_replace primero a las subcadenas mas larga hasta las mas pequeña
Que tu array sea ordenado asi

Código PHP:
$indices = array("provincia de Camagüey","ciudad de Camagüey","Camagüey"); 

Saludos
  #3 (permalink)  
Antiguo 09/05/2007, 10:01
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Re: Problemas con palabras... buscar textos y reemplazar

otro consejo mas , seria usar str_ireplace que es insetive (no importa q sea mayuscula o minuscula) para reemplazar q te puede ayudar si es que quieres reemplazar CAmAgüey(o distintas mezclas) por camagüey

Saludos
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 03:37.