Foros del Web » Programando para Internet » PHP »

Reemplazar palabras exceptuando los enlaces

Estas en el tema de Reemplazar palabras exceptuando los enlaces en el foro de PHP en Foros del Web. Hola chic@s! Quiero convertir de una cadena una serie de palabras en enlaces, pero me ocurre que al hacer preg_replace, cuando encuentra otra vez la ...

  #1 (permalink)  
Antiguo 03/05/2011, 10:27
 
Fecha de Ingreso: diciembre-2003
Mensajes: 157
Antigüedad: 20 años, 11 meses
Puntos: 1
Reemplazar palabras exceptuando los enlaces

Hola chic@s!

Quiero convertir de una cadena una serie de palabras en enlaces, pero me ocurre que al hacer preg_replace, cuando encuentra otra vez la palabra me vuelve a crear el enlace y, por tanto, no me sirve.

Código PHP:
$patrones = array();
$patrones[0] = '/Spain/';
$patrones[1] = '/spain/';
$sustituciones = array();
$sustituciones[0] = '<a title="Casas de lujo en Spain" href="luxury-homes-spain">Spain</a>';
$sustituciones[1] = '<a title="Casas de lujo en Spain" href="luxury-homes-spain">Spain</a>';
$Text 'Currently we have exclusive properties available throughout Spain.';
$Text preg_replace($patrones$sustituciones,$Text);
echo 
$Text
Esto me devuelve:
Currently we have exclusive properties available throughout <a title="Casas de lujo en Spain" href="luxury-homes-<a title="Casas de lujo en Spain" href="luxury-homes-spain">Spain</a>">Spain</a>.

La idea es hacer un preg_replace exceptuando los enlaces que contenga la cadena.
He intentado de todo, y no encuentro la solución... ¿Alguna idea?
__________________
http://www.idilicstudio.com
  #2 (permalink)  
Antiguo 03/05/2011, 13:27
Avatar de pancho_k  
Fecha de Ingreso: julio-2007
Mensajes: 32
Antigüedad: 17 años, 4 meses
Puntos: 4
Respuesta: Reemplazar palabras exceptuando los enlaces

Oye carnal, de casualidad intentaste aplicarle un array_unique al arreglo $patrones antes de hacer las sustituciones?

o aun no entiendo tu problema?
  #3 (permalink)  
Antiguo 03/05/2011, 13:30
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 15 años, 3 meses
Puntos: 41
Respuesta: Reemplazar palabras exceptuando los enlaces

$patrones[0] = '/Spain./';
$patrones[1] = '/spain./';
  #4 (permalink)  
Antiguo 03/05/2011, 13:47
Avatar de pancho_k  
Fecha de Ingreso: julio-2007
Mensajes: 32
Antigüedad: 17 años, 4 meses
Puntos: 4
Respuesta: Reemplazar palabras exceptuando los enlaces

Cierto, no vi ese detalle, mis disculpas.
  #5 (permalink)  
Antiguo 03/05/2011, 14:00
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 15 años, 3 meses
Puntos: 41
Respuesta: Reemplazar palabras exceptuando los enlaces

Cita:
Iniciado por xtimed Ver Mensaje
$patrones[0] = '/Spain./';
$patrones[1] = '/spain./';
A lo que me referia, es que si le agregas el punto al patrón, creo que te va a funcionar
  #6 (permalink)  
Antiguo 04/05/2011, 00:48
 
Fecha de Ingreso: diciembre-2003
Mensajes: 157
Antigüedad: 20 años, 11 meses
Puntos: 1
Respuesta: Reemplazar palabras exceptuando los enlaces

Gracias a todos por vuestras respuestas.

Pero no funciona, aquí he puesto ésta frase como ejemplo, para que veáis cómo se rompe el enlace.

Lo que quiero es hacer una función que busque y substituya una palabra en una cadena, independientemente si tiene un punto al final o no, pero si ésta palabra está situada en un enlace <a> </a>, que la ignore y no la substituya.

Gracias de antemano!!!
__________________
http://www.idilicstudio.com

Última edición por tonimito; 04/05/2011 a las 08:48
  #7 (permalink)  
Antiguo 04/05/2011, 16:45
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 6 meses
Puntos: 322
Respuesta: Reemplazar palabras exceptuando los enlaces

Lee sobre expresiones regulares...
Buscas una cadena, luego con una expresión regular checas si ésta contiene un enlace.. Si es así, no proceder.

Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #8 (permalink)  
Antiguo 05/05/2011, 03:18
 
Fecha de Ingreso: diciembre-2003
Mensajes: 157
Antigüedad: 20 años, 11 meses
Puntos: 1
Respuesta: Reemplazar palabras exceptuando los enlaces

Gracias Sourcegeek!
Si, lo tenía realizado con expresiones regulares, pero no me funcionaba, ya que no se como decirle al código "si está entre <a (?*) a</a>", no substituyas, ese es el problema!

Gracias!
__________________
http://www.idilicstudio.com
  #9 (permalink)  
Antiguo 05/05/2011, 08:21
Avatar de pancho_k  
Fecha de Ingreso: julio-2007
Mensajes: 32
Antigüedad: 17 años, 4 meses
Puntos: 4
Respuesta: Reemplazar palabras exceptuando los enlaces

No se si sea la forma correcta de resolverlo pero yo hice esto:


Código PHP:
$patrones = array();
$patrones[0] = 'Spain';
$patrones[1] = 'spain';
$sustituciones = array();
$sustituciones[0] = '<a title="Casas de lujo en Spain" href="luxury-homes-spain">Spain</a>';
$sustituciones[1] = '<a title="Casas de lujo en Spain" href="luxury-homes-spain">Spain</a>';
$Text "Currently we have exclusive properties available throughout Spain.";
//$Text = preg_replace($patrones, $sustituciones,$Text);
//echo $Text;  


$eltext=explode(" ",$Text);

foreach(
$eltext as $pc => $cadena)
{
    foreach(
$patrones as $pos => $patron)
    {
        if(
strpos($cadena,$patron)===false)
        {
            echo 
$patron." no esta en cadena: ".$cadena."<br>";
        }
        else
        {
            echo 
$patron." si esta en cadena ".$cadena."<br>";
            
$eltext[$pc]=str_replace($patrones[$pos],$sustituciones[$pos],$cadena);
        }
    }
}

echo 
"<br>";


$Text=implode(" ",$eltext);
echo 
$Text
Ojalá te sirva o sea lo que tratas de hacer, saludox!
  #10 (permalink)  
Antiguo 05/05/2011, 11:32
 
Fecha de Ingreso: diciembre-2003
Mensajes: 157
Antigüedad: 20 años, 11 meses
Puntos: 1
Respuesta: Reemplazar palabras exceptuando los enlaces

Gracias Pancho_k!

La verdad es que funciona, pero tengo que experimentar, ya que lo que quiero es listar una serie de palabras, que las busque y las substituya.

Es decir, lo que ocurre ahora es que en el código que me has pasado, si cambio:

Código PHP:
$patrones = array();
$patrones[0] = 'Spain'
$patrones[1] = 'Argentina'// Antes era 'spain'
$sustituciones = array();
$sustituciones[0] = '<a title="Casas de lujo en Spain" href="luxury-homes-spain">Spain</a>';
$sustituciones[1] = '<a title="Casas de lujo en Argentina" href="luxury-homes-argentina">Argentina</a>';
$Text "Currently we have exclusive properties available throughout Spain and Argentina."
Me cambia todos los Argentina por Spain:

Código PHP:
Currently we have exclusive properties available throughout Spain and Spain
Y lo que quiero es listar muchas, y que se substituyan por su array numérico, y que tanto si las palabras son Spain o Argentina y están entre <a></a>, no las substituya, tal y como has conseguido.

Muchas gracias por la ayuda!!!!
__________________
http://www.idilicstudio.com
  #11 (permalink)  
Antiguo 05/05/2011, 13:02
Avatar de pancho_k  
Fecha de Ingreso: julio-2007
Mensajes: 32
Antigüedad: 17 años, 4 meses
Puntos: 4
Respuesta: Reemplazar palabras exceptuando los enlaces

Aver aver aver carnalito, vamonos despacio que soy lento. A que te refieres con que cambia los Argentina por Spain?, no se supone que si agregas una palabra a $patrones, se agrega su correspondiente liga a $susticuciones?

Yo corrí el ejemplo que te pase con las variantes que propones y funciona de maravilla, a las palabras Spain los cambia por su correspondiente liga Spain al igual con Argentina por Argentina. Posiblemente aun no he entendido el problema, entonces, te planteo lo que entiendo:

Tienes 2 arreglos, en el primero ($patrones) un listado de las palabras a sustituir y en el segundo ($sustituciones) el listado de links o ligas que sustituiran su correspondiente de patrones en un texto cualquiera, ahora, al recorrer el texto, si se topa con una coincidencia ($patrones), esta coincidencia es cambiada por por su correspondiente en $sustituciones y es mas o menos lo que hace la solución que propuse, estoy bien o me regreso?

Serias tan amable de postear el código que sustituyo los Argentina por Spain?
  #12 (permalink)  
Antiguo 05/05/2011, 13:55
Avatar de pancho_k  
Fecha de Ingreso: julio-2007
Mensajes: 32
Antigüedad: 17 años, 4 meses
Puntos: 4
Respuesta: Reemplazar palabras exceptuando los enlaces

Otra cosa, en el caso de que tengas que recorrer texto que ya contiene ligas, simplemente se agrega una bandera y su correspondiente condición. Saludox!
  #13 (permalink)  
Antiguo 05/05/2011, 13:59
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Reemplazar palabras exceptuando los enlaces

no suelo dar códigos por respuesta.. pero estaba interesante lo que intentas hacer
te dejo un ejemplo de como lo haría yo


Código PHP:
<?php
$bar 
'pais <a href="pais"> pais'// palabra
$search 'pais'// buscar
$replace 'chile'// reeplazar siempre que no sea un href de un <a>
echo preg_replace_callback("/(<a .*?href=['\"].*?$search.*?['\"].*?>|$search)/i", function($e) use ($replace) {
    return 
$e[0] == strip_tags($e[0]) ? $replace $e[0];
} , 
$bar); // resultado: chile <a href="pais"> chile

saludos.
espero te sea de utilidad !
__________________
More about me...
~ @rhyudek1
~ Github
  #14 (permalink)  
Antiguo 06/05/2011, 01:39
 
Fecha de Ingreso: diciembre-2003
Mensajes: 157
Antigüedad: 20 años, 11 meses
Puntos: 1
Respuesta: Reemplazar palabras exceptuando los enlaces

Cita:
Iniciado por Hidek1 Ver Mensaje
no suelo dar códigos por respuesta.. pero estaba interesante lo que intentas hacer
te dejo un ejemplo de como lo haría yo


Código PHP:
<?php
$bar 
'pais <a href="pais"> pais'// palabra
$search 'pais'// buscar
$replace 'chile'// reeplazar siempre que no sea un href de un <a>
echo preg_replace_callback("/(<a .*?href=['\"].*?$search.*?['\"].*?>|$search)/i", function($e) use ($replace) {
    return 
$e[0] == strip_tags($e[0]) ? $replace $e[0];
} , 
$bar); // resultado: chile <a href="pais"> chile

saludos.
espero te sea de utilidad !
Gracias a ambos! ahora retomo el tema, y os comento...

Por cierto, Hidek1, tu código me da error!
Ahora investigo...
__________________
http://www.idilicstudio.com
  #15 (permalink)  
Antiguo 06/05/2011, 02:04
 
Fecha de Ingreso: diciembre-2003
Mensajes: 157
Antigüedad: 20 años, 11 meses
Puntos: 1
Respuesta: Reemplazar palabras exceptuando los enlaces

Si pancho_k, tu código funciona perfectamente! Tienes razón!
Lo que me ocurría, que lo apliqué con patrones de más de una palabra, y claro, por el explode que hay aplicado, pues no funciona, es decir...

Código PHP:
$patrones = array();
$patrones[0] = 'Spain';
$patrones[1] = 'Argentina is cool';
$sustituciones = array();
$sustituciones[0] = '<a title="Casas de lujo en Spain" href="luxury-homes-spain">Spain</a>';
$sustituciones[1] = '<a title="Casas de lujo en Argentina" href="luxury-homes-argentina">Argentina</a>';
$Text "Currently we have exclusive properties available throughout Spain and Argentina is cool."
//echo $Text;  

$eltext=explode(" ",$Text);
foreach(
$eltext as $pc => $cadena){
    foreach(
$patrones as $pos => $patron){
        if(
strpos($cadena,$patron)===false){
        }else{
        
$eltext[$pc]=str_replace($patrones[$pos],$sustituciones[$pos],$cadena);
        }
    }
};

$Text=implode(" ",$eltext);
echo 
$Text
Muchisimas gracias, de veras!!!!

Menudo lio!
__________________
http://www.idilicstudio.com
  #16 (permalink)  
Antiguo 06/05/2011, 08:09
Avatar de pancho_k  
Fecha de Ingreso: julio-2007
Mensajes: 32
Antigüedad: 17 años, 4 meses
Puntos: 4
Respuesta: Reemplazar palabras exceptuando los enlaces

Entonces revisa bien la solución que propone Hidek1, a mi si me funciona, hace lo que necesitas en mucho menos lineas y como esta utilizando expresiones regulares no vas a tener el problema de los espacios en blanco sobre los patrones de hecho no ocuparas ni el explode, a mi me parece una muy buena solución, saludox!
  #17 (permalink)  
Antiguo 07/05/2011, 04:30
 
Fecha de Ingreso: diciembre-2003
Mensajes: 157
Antigüedad: 20 años, 11 meses
Puntos: 1
Respuesta: Reemplazar palabras exceptuando los enlaces

Gracias pancho_k!
Qué cosa más extraña, hago copy-paste del código de Hidek1, y me da error, y me dices que a tí no...has cambiado algo tu?

Gracias!!!
__________________
http://www.idilicstudio.com
  #18 (permalink)  
Antiguo 07/05/2011, 11:11
Avatar de pancho_k  
Fecha de Ingreso: julio-2007
Mensajes: 32
Antigüedad: 17 años, 4 meses
Puntos: 4
Respuesta: Reemplazar palabras exceptuando los enlaces

francamente no cambie nada, no creo que sea por la versión del PHP, yo uso el 5 y tu?
  #19 (permalink)  
Antiguo 07/05/2011, 11:21
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Reemplazar palabras exceptuando los enlaces

Si te da error es porque tienes una versión anterior a la 5.3.0. Si no tienes esa versión, es bueno que vayas integrando esa versión, ya que la versión 5.2.x no tiene soporte, sino que toda actualización se va a estar haciendo a la versión 5.3.x. Lo otro, si tienes la versión 5.3 entonces asegúrate de copiar y pegar exactamente lo que te dió Hidek1 porque sí funciona.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #20 (permalink)  
Antiguo 09/05/2011, 01:15
 
Fecha de Ingreso: diciembre-2003
Mensajes: 157
Antigüedad: 20 años, 11 meses
Puntos: 1
Respuesta: Reemplazar palabras exceptuando los enlaces

Gracias a ambos, efectivamente es por mi versión de PHP, que es 5.2.5 y no 5.3.0

Lo malo, creo que no la puedo cambiar, al ser un host compartido...a ver si puedo adaptar el código...se aceptan sugerencias! :)

Gracias a todos!
__________________
http://www.idilicstudio.com
  #21 (permalink)  
Antiguo 10/05/2011, 05:37
 
Fecha de Ingreso: diciembre-2003
Mensajes: 157
Antigüedad: 20 años, 11 meses
Puntos: 1
Respuesta: Reemplazar palabras exceptuando los enlaces

Cita:
Iniciado por Hidek1 Ver Mensaje
no suelo dar códigos por respuesta.. pero estaba interesante lo que intentas hacer
te dejo un ejemplo de como lo haría yo


Código PHP:
<?php
$bar 
'pais <a href="pais"> pais'// palabra
$search 'pais'// buscar
$replace 'chile'// reeplazar siempre que no sea un href de un <a>
echo preg_replace_callback("/(<a .*?href=['\"].*?$search.*?['\"].*?>|$search)/i", function($e) use ($replace) {
    return 
$e[0] == strip_tags($e[0]) ? $replace $e[0];
} , 
$bar); // resultado: chile <a href="pais"> chile

saludos.
espero te sea de utilidad !
¿Alguien tiene idea de cómo pasar este código a PHP 5.2.5?
Me estoy volviendo loco!
Graciassss!!!
__________________
http://www.idilicstudio.com
  #22 (permalink)  
Antiguo 10/05/2011, 07:46
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Reemplazar palabras exceptuando los enlaces

cambiale el use ($replace)
y hace que esa variable sea de entorno global dentro de la funcion

saludos.
__________________
More about me...
~ @rhyudek1
~ Github
  #23 (permalink)  
Antiguo 10/05/2011, 08:04
 
Fecha de Ingreso: diciembre-2003
Mensajes: 157
Antigüedad: 20 años, 11 meses
Puntos: 1
Respuesta: Reemplazar palabras exceptuando los enlaces

Gracias Hidek1!
Me imaginaba que iban los tiros por hacer $GLOBALS['replace'].

Pero no encuentro la solución al código que me substituya a use ($replace), no sé que poner para que me funcione.

Código PHP:
$bar 'pais <a href="pais"> pais';
$search 'pais';
$replace 'chile';
echo 
preg_replace_callback("/(<a .*?href=['\"].*?$search.*?['\"].*?>|$search)/i"

function(
$e) use ($replace) {
    return 
$e[0] == strip_tags($e[0]) ? $replace $e[0];
}, 
// ¿Por cual otro código lo substituyo? todo lo que intento me da error!

$bar); 
__________________
http://www.idilicstudio.com
  #24 (permalink)  
Antiguo 10/05/2011, 08:12
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Reemplazar palabras exceptuando los enlaces

si haces lo que te digo te funcionara...

1.- borra la palabra use ($replace) del código
2.- especifica la variable $replace como global dentro de la función

creo que la ayuda esta ahí.. solo basta que lo intentes

www.php.net/global

saludos.
__________________
More about me...
~ @rhyudek1
~ Github
  #25 (permalink)  
Antiguo 10/05/2011, 08:17
 
Fecha de Ingreso: diciembre-2003
Mensajes: 157
Antigüedad: 20 años, 11 meses
Puntos: 1
Respuesta: Reemplazar palabras exceptuando los enlaces

Gracias de nuevo (y por la paciencia!) Hidek1!

Lógicamente, antes de postear nada, ya lo había intentado, e incluso otras opciones, pero me sigue dando error!

Código PHP:
$bar 'pais <a href="pais"> pais'// palabra
$search 'pais'// buscar
$replace 'chile'// reeplazar siempre que no sea un href de un <a>

echo preg_replace_callback("/(<a .*?href=['\"].*?$search.*?['\"].*?>|$search)/i", function($e) {
    return 
$e[0] == strip_tags($e[0]) ? $GLOBALS['replace'] : $e[0];
}, 
$bar); 
Error: Parse error: syntax error, unexpected T_FUNCTION

Gracias de nuevo, de veras!
__________________
http://www.idilicstudio.com
  #26 (permalink)  
Antiguo 10/05/2011, 08:28
 
Fecha de Ingreso: diciembre-2003
Mensajes: 157
Antigüedad: 20 años, 11 meses
Puntos: 1
Respuesta: Reemplazar palabras exceptuando los enlaces

Bufff!!! Al fin!!! parece que lo hemos conseguido!!!!

Tenía que sacar la función fuera del preg_replace_callback y entrecomillarla dentro de la misma:

Código PHP:
$bar 'pais <a href="pais"> pais';
$search 'pais';
$replace 'chile';
function 
Replace($e){
        return 
$e[0] == strip_tags($e[0]) ? $GLOBALS['replace'] : $e[0];
}
echo 
preg_replace_callback("/(<a .*?href=['\"].*?$search.*?['\"].*?>|$search)/i""Replace"$bar); 
Muchas gracias a todos los que han echado un cable! (especialmente a Hidek1!)
Sois geniales!
__________________
http://www.idilicstudio.com
  #27 (permalink)  
Antiguo 10/05/2011, 08:31
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Reemplazar palabras exceptuando los enlaces

buuu y si usas create_function() ?

Código PHP:
<?php
$bar 
'pais <a href="pais"> pais'// palabra
$search 'pais'// buscar
$replace 'chile'// reeplazar siempre que no sea un href de un <a>
echo preg_replace_callback("/(<a .*?href=['\"].*?$search.*?['\"].*?>|$search)/i",
        
create_function('$e''return $e[0] == strip_tags($e[0]) ? $GLOBALS["replace"] : $e[0];'), $bar);

www.php.net/create_function


saludos.

---
EDITO: ya lo lograste... ;D.. excelente
__________________
More about me...
~ @rhyudek1
~ Github
  #28 (permalink)  
Antiguo 10/05/2011, 08:59
 
Fecha de Ingreso: diciembre-2003
Mensajes: 157
Antigüedad: 20 años, 11 meses
Puntos: 1
Respuesta: Reemplazar palabras exceptuando los enlaces

Si, Hidek1, también funciona!

Ahora tengo otro problema, quiero listar los patrones de susbtitución como array, como hago con preg_replace, y no me funciona, para variar.

Código PHP:
<?php
$bar 
'Pais es muy bonito <a href="pais"> un gran pais</a>'// palabra
$search = array();
$search[0] = '/pais/';
$search[1] = '/bonito/';
$replace = array();
$replace[0] = 'chile';
$replace[1] = 'precioso';
echo 
preg_replace_callback("/(<a .*?href=['\"].*?$search.*?['\"].*?>|$search)/i",
        
create_function('$e''return $e[0] == strip_tags($e[0]) ? $GLOBALS["replace"] : $e[0];'), $bar);
?>
A investigar toca...se aceptan ayudas!
__________________
http://www.idilicstudio.com
  #29 (permalink)  
Antiguo 10/05/2011, 09:18
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Reemplazar palabras exceptuando los enlaces

pues si estas entregando un array dentro de un string

deberias cambiar

$search[0] = '/pais/';
$search[1] = '/bonito/';

por

$search[0] = "/(<a .*?href=['\"].*?pais.*?['\"].*?>|pais)/i";
$search[1] = "/(<a .*?href=['\"].*?bonito.*?['\"].*?>|bonito)/i";


y cambiar el primer argumento de preg_replace_callback por $search

saludos.
__________________
More about me...
~ @rhyudek1
~ Github
  #30 (permalink)  
Antiguo 10/05/2011, 09:45
 
Fecha de Ingreso: diciembre-2003
Mensajes: 157
Antigüedad: 20 años, 11 meses
Puntos: 1
Respuesta: Reemplazar palabras exceptuando los enlaces

Cita:
Iniciado por Hidek1 Ver Mensaje
pues si estas entregando un array dentro de un string

deberias cambiar

$search[0] = '/pais/';
$search[1] = '/bonito/';

por

$search[0] = "/(<a .*?href=['\"].*?pais.*?['\"].*?>|pais)/i";
$search[1] = "/(<a .*?href=['\"].*?bonito.*?['\"].*?>|bonito)/i";


y cambiar el primer argumento de preg_replace_callback por $search

saludos.
Gracias de nuevo Hidek1,
Si utilizo el código tal y como me has dicho:

Código PHP:
$bar 'Pais es muy bonito <a href="pais"> un gran pais</a>'// palabra
$search = array();
$search[0] = "/(<a .*?href=['\"].*?pais.*?['\"].*?>|pais)/i";
$search[1] = "/(<a .*?href=['\"].*?bonito.*?['\"].*?>|bonito)/i";
$replace = array();
$replace[0] = 'chile';
$replace[1] = 'precioso';

echo 
preg_replace_callback($search,
        
create_function('$e''return $e[0] == strip_tags($e[0]) ? $GLOBALS["replace"] : $e[0];'), $bar); 

Me devuelve:
Array es muy Array <a href="pais"> un gran Array</a>

Y digo yo...¿porque demonios no puede funcionar como preg_replace o str_replace?

gracias de nuevo!
__________________
http://www.idilicstudio.com

Etiquetas: enlaces, palabras, reemplazar
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 08:15.