Foros del Web » Programando para Internet » PHP »

comprobar y sustituir palabras en array

Estas en el tema de comprobar y sustituir palabras en array en el foro de PHP en Foros del Web. Tengo una cadena donde quiero comprobar si existe alguna palabra que tengo en un array quitandola si existe en la cadena: ejemplo cadena @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 17/03/2015, 07:24
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años, 6 meses
Puntos: 5
comprobar y sustituir palabras en array

Tengo una cadena donde quiero comprobar si existe alguna palabra que tengo en un array quitandola si existe en la cadena:

ejemplo cadena

Código PHP:
Ver original
  1. $cadena="esto+es+una+cadena+de+texto";
  2.  
  3. $array=array("es","de","con");

yo hice asi:

Código PHP:
Ver original
  1. $cadena_nueva=str_replace($array, '', $cadena);


pero realmente quedria quitar tambien el signo + si lo tiene, igual no se como comprobar si existe coincidencias antes de remplazarlas.
  #2 (permalink)  
Antiguo 17/03/2015, 07:52
 
Fecha de Ingreso: marzo-2015
Ubicación: Peru
Mensajes: 34
Antigüedad: 9 años, 8 meses
Puntos: 6
Respuesta: comprobar y sustituir palabras en array

esto te puede ayudar


aca puedes poner todo lo que quieras buscar indexado
$patterns = array();
$patterns[0] = '/es/';
$patterns[1] = '/de/';
$patterns[2] = '/con/';
$patterns[3] = '/+/';

y aca todo lo que quieres reemplazar indexado
$replacements = array();
$replacements[0] = '';
$replacements[1] = '';
$replacements[2] = '';
$replacements[3] = '';


$nuevacadena= preg_replace($patterns, $replacements, $cadenadetexto);
  #3 (permalink)  
Antiguo 17/03/2015, 12:11
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años, 6 meses
Puntos: 5
Respuesta: comprobar y sustituir palabras en array

El problema es que no se como saber si verdaderamente tienes coincidencias antes de llamar a preg_replace.
  #4 (permalink)  
Antiguo 17/03/2015, 12:48
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años, 7 meses
Puntos: 468
Respuesta: comprobar y sustituir palabras en array

puede pasar el string a un array por medio de explode() y luego usar in_array() que comprueba si existe un valor dentro de un array

Código PHP:
Ver original
  1. if (in_array("prueba", $tuarray)) {
  2.     echo "Existe prueba";
  3. }
__________________
No te olvides de dar +1 a quien te echa un cable ;)
  #5 (permalink)  
Antiguo 17/03/2015, 12:50
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años, 6 meses
Puntos: 5
Respuesta: comprobar y sustituir palabras en array

Hola, leyendo la documentacion ya probe in_array pero no me convence porque me procesa muy lento el script php, alguna sugerencia para que no tarde tanto? saludos
  #6 (permalink)  
Antiguo 17/03/2015, 12:56
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: comprobar y sustituir palabras en array

Cita:
Iniciado por roboty Ver Mensaje
Hola, leyendo la documentacion ya probe in_array pero no me convence porque me procesa muy lento el script php, alguna sugerencia para que no tarde tanto? saludos
¿Tienes evidencia de que in_array() hace que tu script sea lento o sólo es tu impresión?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 17/03/2015, 13:04
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años, 6 meses
Puntos: 5
Respuesta: comprobar y sustituir palabras en array

Cita:
Iniciado por pateketrueke Ver Mensaje
¿Tienes evidencia de que in_array() hace que tu script sea lento o sólo es tu impresión?
Es evidente ya lo puse arriba, que por eso descarte esa opcion, bueno gracias a los que colaboraron intentare replantearlo de otra forma, saludos.
  #8 (permalink)  
Antiguo 17/03/2015, 13:09
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años, 7 meses
Puntos: 468
Respuesta: comprobar y sustituir palabras en array

Dudo que in_array() haga que tu script se relentice apenas algo apreciable.

Por otro lado tu idea principal no creo que el problema sea que no te elimina los "+".

Si tu cadena esta: "esto+es+una+cadena+de+texto", supongo que quieres que te quite ("es","de","con") quedando este resultado

Código PHP:
Ver original
  1. $cadena_nueva = "esto+una+cadena+texto"

pues te ha quitado las coincidencias con "es","de","con", pero tu resultado no es ese. pues te imprime

Cita:
to++una+cana++texto
en vez de
Cita:
esto+una+cadena+texto
y aunque te quitemos los + de sobra no quedará con lo que supongo que esperas.

Sigo pensando que la mejor opción es que pases la cadena a un array, compares por medio de in_array(), si existe en el array, aplicas un unset() a ese elemento y lo eliminas del array, luego lo vuelves a pasar a una string por implode y tienes tu cadena de nuevo, y sin + de sobra
__________________
No te olvides de dar +1 a quien te echa un cable ;)
  #9 (permalink)  
Antiguo 17/03/2015, 15:06
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: comprobar y sustituir palabras en array

Igual sería más fácil de entender su pudieras dar varios ejemplos del comportamiento que esperas, ya que lo que has explicado no hace ninguna precisión sobre dichos detalles.

Es decir, algo así:
Cita:
Si tengo "a+b+c" y reemplazo "b" debería quedar "a+c", etc.
Lo comento porque es imposible adivinar exactamente lo que buscas, y dada la escasa explicación que das casi nos pides que leamos tu mente o que hagamos suposiciones basadas en lo poco que dices.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: palabras, sustituir
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 14:10.