Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: octavioxd en 11 Marzo 2010, 20:12 pm



Título: Reemplazar palabra
Publicado por: octavioxd en 11 Marzo 2010, 20:12 pm
Hola tengo un pequeño problema
yo necesito reemplazar en un texto una sola palabra una vez es decir seria algo asi

hola a todos soy pedro como buen pedro que soy tengo poco dinero.

yo lo que necesito hacer es que borre pedro una sola vez quedaria asi

hola a todos soy como buen pedro que soy tengo poco dinero.

me entienden solo quiero que la reemplaze unasola vez
aver si alguien me encuentra solucion!
Gracias


Título: Re: Reemplazar palabra
Publicado por: ~ Yoya ~ en 11 Marzo 2010, 20:31 pm
Usa la funcion str_replace() de php...
http://www.php.net/manual/en/function.str-replace.php


Saludos.


Título: Re: Reemplazar palabra
Publicado por: KrossPock en 12 Marzo 2010, 21:22 pm
Usa la funcion str_replace() de php...
http://www.php.net/manual/en/function.str-replace.php


Saludos.

Pero con str_replace reemplazaria todos los "pedros" xD


Título: Re: Reemplazar palabra
Publicado por: jdc en 12 Marzo 2010, 21:31 pm
Eso sí, sí se presenta un texto que diga
 
Hola textopedrotexto
 
Quedará
 
Hola textotexto
 
Asi que cuidado con que borras, sí quieres que sólo se borre "pedro" cuando no tenga nada al principio ni al final tendrás que usar expresiones regulares, que son un cacho xD


Título: Re: Reemplazar palabra
Publicado por: ~ Yoya ~ en 12 Marzo 2010, 22:24 pm
naaa, que a mi me gustan  bastante las expresiones regulares xDDDDDDDDDDDDDDDDD...


Título: Re: Reemplazar palabra
Publicado por: raul338 en 13 Marzo 2010, 00:42 am
Expresiones regulares? Jáá!

Porque no busca la primera coincendia de "pedro" y solo reemplaza esa, no recuerdo las funciones de PHP, pero la idea esta


Título: Re: Reemplazar palabra
Publicado por: jdc en 13 Marzo 2010, 01:40 am
Expresiones regulares? Jáá!

Porque no busca la primera coincendia de "pedro" y solo reemplaza esa, no recuerdo las funciones de PHP, pero la idea esta

Arriba la mencionaron... str_replace() pero cambia la palabra o caracter donde lo encuentre

Si necesitas quitar por ejemplo la a en:

hola como estas

excelente quedaria

hol como ests

pero si necesita quitar los "en"

y escribes

Es una excelente noche en Santiago

quedaria

es una excelte noche Santiago


Osea no sirve 100%


Título: Re: Reemplazar palabra
Publicado por: Ari Slash en 13 Marzo 2010, 02:25 am
hola pero si quieres sacar los "en"
el str_replace deberas reemplazar los " en "
hay que jugar un poco xD


Título: Re: Reemplazar palabra
Publicado por: raul338 en 13 Marzo 2010, 13:09 pm
si, Ari-Slash tiene razon, pero lo que yo decia es que encuentre la primera coincidencia. Con expresiones regulares seria

Código
  1. $final = preg_replace('/[^\w](pedro)[^\w]/i', "pablo", $text, 1); // Solo reeemplaza la primer coincidencia
  2.  

la "/i" es para que no sea sensible a mayusculas

por ejemplo:
Citar
Hola pedro, pedro no se como decirte esto: pablo se la come

quedaria a:
Citar
Hola pablo, pedro no se como decirte esto: pablo se la come

Para que reemplaze a todas, hay que quitar el 1 del ultimo parametro.

Funciona solo cuando "pedro" no esta junto a dos letras
ejemplos que (deberian) funcionar

♫pedro se la come -> ♫pablo se la come
Pedro! No entres ahi -> pablo! No entres ahi

y demas....


Título: Re: Reemplazar palabra
Publicado por: ~ Yoya ~ en 13 Marzo 2010, 14:30 pm
No es necesario expreciones regulares, solo quiere eliminar la palabra "en", y la funcion  str_replace() funciona perfecto...


Título: Re: Reemplazar palabra
Publicado por: ~ Yoya ~ en 13 Marzo 2010, 16:12 pm
Código
  1. <?php
  2. //Funcion para reemplazar letras...
  3. function del($str,$rem, $txt) {
  4. if(!empty($str) && !empty($rem) && !empty($txt))
  5. {
  6.    $del = str_replace($str,$rem,$txt);
  7.    return $del;
  8. }else { return 'Faltan parametros';}
  9. }
  10. $texto = 'Jesus dijo que volvera pronto';
  11. echo del('o',' ',$texto);
  12. /*Salida:
  13. Jesus dij  que v lvera pr nt
  14. */
  15. ?>


Título: Re: Reemplazar palabra
Publicado por: KrossPock en 17 Marzo 2010, 00:52 am
Código
  1. <?php
  2. //Funcion para reemplazar letras...
  3. function del($str,$rem, $txt) {
  4. if(!empty($str) && !empty($rem) && !empty($txt))
  5. {
  6.    $del = str_replace($str,$rem,$txt);
  7.    return $del;
  8. }else { return 'Faltan parametros';}
  9. }
  10. $texto = 'Jesus dijo que volvera pronto';
  11. echo del('o',' ',$texto);
  12. /*Salida:
  13. Jesus dij  que v lvera pr nt
  14. */
  15. ?>

Ya te dije mas arriba... solo quiere reemplazar la primera vez ¬¬

osea:

Hola juan como estas juan

quiere que quede

Hola como estas juan


Título: Re: Reemplazar palabra
Publicado por: raul338 en 17 Marzo 2010, 01:16 am
si, Ari-Slash tiene razon, pero lo que yo decia es que encuentre la primera coincidencia. Con expresiones regulares seria

Código
  1. $final = preg_replace('/[^\w](pedro)[^\w]/i', "pablo", $text, 1); // Solo reeemplaza la primer coincidencia
  2.  

la "/i" es para que no sea sensible a mayusculas

por ejemplo:
Citar
Hola pedro, pedro no se como decirte esto: pablo se la come

quedaria a:
Citar
Hola pablo, pedro no se como decirte esto: pablo se la come

Para que reemplaze a todas, hay que quitar el 1 del ultimo parametro.

Funciona solo cuando "pedro" no esta junto a dos letras
ejemplos que (deberian) funcionar

♫pedro se la come -> ♫pablo se la come
Pedro! No entres ahi -> pablo! No entres ahi

y demas....

eso te dice algo? :rolleyes:


Título: Re: Reemplazar palabra
Publicado por: Castg! en 17 Marzo 2010, 01:28 am
uno solo!! y si se pude usar las expresiones regulares, pero si no las entendes podes probar con str_replace():

Código
  1. if(!$borrado){
  2. str_replace(" pedro ", "", $texto);
  3. $borrado = true;
  4. }


Título: Re: Reemplazar palabra
Publicado por: raul338 en 17 Marzo 2010, 02:33 am
otra vez.... el str_replace reemplaza todas las coincidencias!!!  >:D


Título: Re: Reemplazar palabra
Publicado por: Castg! en 17 Marzo 2010, 03:14 am
pido disculpas! tenes toda la razon! me equivoq, asi se arregla:
Código
  1. $texto = explode(" ", $texto);
  2. for($i=0;$i<strlen($texto);$i++){
  3. if(!$borrado){
  4. str_replace("pedro", "", $texto[$i]);
  5. $borrado = true;
  6. }else{
  7. break;
  8. }
  9. }
  10. $texto = implode("", $texto);
  11.