Foros del Web » Programando para Internet » PHP »

Buscar y eliminar en un array

Estas en el tema de Buscar y eliminar en un array en el foro de PHP en Foros del Web. Hola, el problema que tengo es el siguiente, de un texto creo un array, el cual es separado por ***, ahora hay un valor "dice" ...
  #1 (permalink)  
Antiguo 29/11/2008, 14:14
 
Fecha de Ingreso: julio-2006
Mensajes: 13
Antigüedad: 18 años, 4 meses
Puntos: 1
Pregunta Buscar y eliminar en un array

Hola, el problema que tengo es el siguiente, de un texto creo un array, el cual es separado por ***, ahora hay un valor "dice" dentro del array que puede o no estar, como hago para eliminar el elemento si estuviera?.

Paso a ser un poco mas gráfico:


Array
(
[0] => contenido inicial estatico

[1] =>Contenido 1
[2] =>
valor 1 [numero que tampoco importa]
valor 2 [numero que tampoco importa]
valor 3 [numero que tampoco importa]
valor 4 [numero que tampoco importa]
valor 5 [numero que tampoco importa]
valor 6 [numero que tampoco importa]

usuario dice, 'q carajo es lol?' <-------------esto seria lo que quiero borrar
usuario dice, 'hablemo en castellano vieja' <-------------esto seria lo que quiero borrar

[3] =>Contenido 2
[4] =>
valor 1 [numero que tampoco importa]
valor 2 [numero que tampoco importa]
usuario dice, 'una risa desmesurada'<-------------esto seria lo que quiero borrar
usuario dice, 'para no poner jajajaja'<-------------esto seria lo que quiero borrar

[5] =>Contenido 3
[6] =>
valor 1 [numero que tampoco importa]
valor 2 [numero que tampoco importa]
valor 3 [numero que tampoco importa]
usuario dice, 'eso de lol dejenlo para los ingleses'<-------------esto seria lo que quiero borrar
usuario dice, 'aguante jajaja'<-------------esto seria lo que quiero borrar
)

El array continua unas lineas mas. Bien, ahora lo que yo quiero borrar son todas las partes donde esta la palabra "dice", usuario es variable, lo único constante en estas lineas es la palabra dice y las '' que no veo útil borrar o que esta entre'' porque me quedarían los nombres de los usuarios.

Espero se entiendan y me puedan ayudar, gracias.
  #2 (permalink)  
Antiguo 29/11/2008, 22:03
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 19 años, 2 meses
Puntos: 55
Respuesta: Buscar y eliminar en un array

y bueno recorres el array con un for y vas pregutnando con una expresion regular por ejemplo y que reemplaze el texto q no queres

por ejemplo

foreach($array as $k => $v){
$array[$k]=preg_replace('palabra_que_no_me_gusta','',$v);//el segundo parametro hace q se que se reemplace por nada la coincidencia
}

y ya
saludos
__________________
Degiovanni Emilio
developtus.com
  #3 (permalink)  
Antiguo 03/12/2008, 15:04
 
Fecha de Ingreso: julio-2006
Mensajes: 13
Antigüedad: 18 años, 4 meses
Puntos: 1
Respuesta: Buscar y eliminar en un array

claro, eso lo puedo hacer, pero como hago para borrar la linea completa?, un usuario no siempre va a decir "para no poner jajajaja", eso es lo que varia, la idea seria decir que en cada linea en la que aparece la palabra "dice" que la borre completamente.
Por ejemplo logro hacer esto:

Array
(
[0] => contenido inicial estático

[1] =>Contenido 1
[2] =>
valor 1 [numero que tampoco importa]
valor 2 [numero que tampoco importa]
valor 3 [numero que tampoco importa]
valor 4 [numero que tampoco importa]
valor 5 [numero que tampoco importa]
valor 6 [numero que tampoco importa]

[3] =>usuario dice, 'q carajo es lol?'
[4] =>usuario dice, 'hablemo en castellano vieja'

Damos por hecho que el numero de posicion del array "[3] =>,[4] =>" no siempre va a ser el mismo, podría ser [20] => o [45] => entonces lo que quiero hacer es buscar en un array la palabra "usuario dice", no puedo hacer andar el "array_search" o "in_array", eso es lo que me estaría faltando.


Edito: array_search seria lo mas apropiado porque me daría la key en la que esta la frase, así podría directamente borrar la key, pero cuando busco no me devuelve nada :S

Gracias por contestar.

Última edición por gorgarcito; 03/12/2008 a las 15:22
  #4 (permalink)  
Antiguo 03/12/2008, 15:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Buscar y eliminar en un array

Usa lo mismo que te indica emiliodeg,

Recorres todo tu array y usa str_pos para buscar el "usuario dice" y lo borras de tu array.

Saludos.
  #5 (permalink)  
Antiguo 14/12/2008, 16:55
 
Fecha de Ingreso: julio-2006
Mensajes: 13
Antigüedad: 18 años, 4 meses
Puntos: 1
Respuesta: Buscar y eliminar en un array

hola de nuevo, no quise molestar preguntando de nuevo, pero ya intente y no puedo hacer que funcione.

si uso el script que me recomienda emiliodeg, me borra el "usuario dice", pero yo quiero borrar todo.

Código PHP:
foreach($array as $k => $v){
$array[$k]=preg_replace('palabra_que_no_me_gusta','',$v);
//si encuentra la "usuario dice"
//sacar del array >>>[B][3] =>usuario dice, 'q carajo es lol?' [/B]<<<<todo eso, la key completa
//osea, si encuentra "usuario dice">>borrar key
//con [B]unset [/B]o no se que otra opción hay

yo queria utilizar array _search, que me devuelve la key, pero es solo para textos completos

algo asi:

Código PHP:
$cadena"todo el texto";


$cadena split("[\n]+"$cadena);//separo todo el texto en lineas

$key array_search('usuario dice'$array); // me dice cual es la key en la que encuentra "usuario dice"
unset($key); //lo borro 
disculpen por seguir molestando.
gracias

Última edición por gorgarcito; 14/12/2008 a las 17:07
  #6 (permalink)  
Antiguo 14/12/2008, 17:04
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: Buscar y eliminar en un array

Debes hacer uso de las expresiones regulares:

Código PHP:
foreach($array as $k => $v){ 
$array[$k]=preg_replace('/usuario dice(.*)/i','reemplazo',$v); 
//si encuentra la "usuario dice" 
//sacar del array >>>[b][3] =>usuario dice, 'q carajo es lol?' [/b]<<<<todo eso, la key completa 
//osea, si encuentra "usuario dice">>borrar key 
//con [b]unset [/b]o no se que otra opción hay 

  #7 (permalink)  
Antiguo 14/12/2008, 17:08
 
Fecha de Ingreso: julio-2006
Mensajes: 13
Antigüedad: 18 años, 4 meses
Puntos: 1
Respuesta: Buscar y eliminar en un array

muchísimas gracias, lo voy a probar, justo estaba editando ^^
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:42.