Foros del Web » Programando para Internet » PHP »

Eliminar palabras repetidas en un txt

Estas en el tema de Eliminar palabras repetidas en un txt en el foro de PHP en Foros del Web. Hola colegas, bueno tengo un problema al querer mostrar el contenido de un TXT cuyo contenido es de una sóla linea, son varias palabras separadas ...
  #1 (permalink)  
Antiguo 18/05/2010, 11:11
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 12 años
Puntos: 9
Eliminar palabras repetidas en un txt

Hola colegas, bueno tengo un problema al querer mostrar el contenido de un TXT cuyo contenido es de una sóla linea, son varias palabras separadas por comas y varias de éstas se repiten y quisiera saber como mostrar todas las palabras sin repetición alguna... si es que se puede, sólo he intentado esto:

Código PHP:
$archivo "palabras.txt"
$fd fopen ($archivo"r"); 
$contenido fread ($fdfilesize ($archivo)); 
$contenido str_replace(",",'<br>',$contenido);
fclose ($fd); 
He intente con una expresión regular que vi en una web , pero no se cómo aplicarla al leer el txt:

Código PHP:
function remove_duplicate_word($text)
{
    return 
preg_replace("/s(w+s)1/i""$1"$text);
}

echo 
remove_duplicate_word($contenido); 
Mi idea es que si tengo: "perro,gato,camello,perro" mi resultado quede:
perro
gato
camello

Espero me puedan ayudar
__________________
Quitenme la vida pero no la bebida.
  #2 (permalink)  
Antiguo 18/05/2010, 11:35
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 11 años, 10 meses
Puntos: 10
Respuesta: Eliminar palabras repetidas en un txt

Cambiar una palabra en el archivo especificamente es dificil; peropuedes recuperar el contenido, tratarlo, y sobreescribir el archivo completamente, con los cambios echos en dicho contenido.

//Prueba esto

//HAZLO CON UN ARCHIVO DE PRUEBA YA QUE TE LO SOBREESCRIBIRA

<?

$lineas =file_get_contents('tuarchivo.txt');

$palabras=explode(" ",$lineas);

for($i=0; $i<count($palabras); $i++){

//echo $palabras[$i]

if($concat == "" || $concat != $palabras[$i]){

$concat=$palabras[$i]." ";

}
}


//resultado:
echo $concat;

//abres tu archivo txt para sobrescribiro
$fp = fopen("tuarchivo.txt","w");

//lo escribimos
fwrite($fp, $concat);


//PD revisa algun bug NO FUNCIONA

?>

Última edición por wiwi74; 18/05/2010 a las 12:05
  #3 (permalink)  
Antiguo 18/05/2010, 11:44
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 12 años
Puntos: 9
Respuesta: Eliminar palabras repetidas en un txt

Sólo quiero mostrar las palabras irrepetibles con un echo.... aunque voy a probar ese FOR a ver si funciona, gracias por contestar.
__________________
Quitenme la vida pero no la bebida.
  #4 (permalink)  
Antiguo 18/05/2010, 11:51
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 10 años, 3 meses
Puntos: 334
Respuesta: Eliminar palabras repetidas en un txt

bueno puedes irte por un camino mas simple =)
lees el archivo.. luego lo metes a un array con
Código PHP:
Ver original
  1. $texto = explode(",", $texto);

asi tendras los valores separados por coma
y luego eliminas los repetidos con array_unique

y si los quieres imprimir..
Código PHP:
Ver original
  1. echo implode("<br>", $texto);
saludos!
__________________
More about me...
~ @rhyudek1
~ Github
  #5 (permalink)  
Antiguo 18/05/2010, 11:59
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 11 años, 10 meses
Puntos: 10
Respuesta: Eliminar palabras repetidas en un txt

//Bueno aqui esta corregido


<?

$string = file_get_contents('tuarchivo.txt');

$palabras=explode(" ",$string);

//var_dump($palabras);

$resultado = array_unique($palabras);

foreach($resultado as $palabras){
echo $palabras." ";
}


?>
  #6 (permalink)  
Antiguo 18/05/2010, 12:08
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 10 años, 3 meses
Puntos: 334
Respuesta: Eliminar palabras repetidas en un txt

Cita:
Iniciado por wiwi74 Ver Mensaje
//Bueno aqui esta corregido


<?

$string = file_get_contents('tuarchivo.txt');

$palabras=explode(" ",$string);

//var_dump($palabras);

$resultado = array_unique($palabras);

foreach($resultado as $palabras){
echo $palabras." ";
}


?>
corregido ? :( a que te refieres con eso ?
las etiquetas php se abren <?php el uso de <? queda descontinuado
el explode es por la , $palabras=explode(",",$string);
__________________
More about me...
~ @rhyudek1
~ Github
  #7 (permalink)  
Antiguo 18/05/2010, 12:29
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 11 años, 10 meses
Puntos: 10
Respuesta: Eliminar palabras repetidas en un txt

Por que la agrasion:

Si esta etiqueta no te funciona es por tu version de php <? php5 quiza

Y ademas pense que (no lei bien) que tenia palabras separadas por espacios

por eso explode(" ","archivo.txt");

Saludos...!


Ahora si, corregido:


<?

$string = file_get_contents('tuarchivo.txt');

$palabras=explode(",",$string);

//var_dump($palabras);

$resultado = array_unique($palabras);

foreach($resultado as $palabras){
echo $palabras." ";
}

?>

Última edición por wiwi74; 18/05/2010 a las 13:11
  #8 (permalink)  
Antiguo 18/05/2010, 12:56
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 10 años, 3 meses
Puntos: 334
Respuesta: Eliminar palabras repetidas en un txt

no era agresion.. sorry si mal entendiste.. era una acotación
tambien va para que lo implementes tu.. el uso de <? en ves de <?php es mal visto ya en los programadores.. denota que no estan actualizados en la materia y por lo general da problemas cuando subes el archivo a servidores que mantienen una version actual de PHP

saludos y sorry por la confusión
__________________
More about me...
~ @rhyudek1
~ Github
  #9 (permalink)  
Antiguo 18/05/2010, 13:03
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 12 años
Puntos: 9
Respuesta: Eliminar palabras repetidas en un txt

Buenos gracias por su su ayuda, funcionó casi perfectamente, aunque creo que tendré que agregarle una coma al final del TXT ya que me repite 1 sola palabra que da la casualidad está al último de la lista (y esa no viene acompañada con coma)
__________________
Quitenme la vida pero no la bebida.
  #10 (permalink)  
Antiguo 18/05/2010, 13:17
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 11 años, 10 meses
Puntos: 10
Respuesta: Eliminar palabras repetidas en un txt

Jaja todo bien...!

Yo me habia equivocado con lo de la coma y puse espacios vacios en el explode... pensando que su string estaba dividodo en espacios vacios... (lei mal)

//...le agrego php aunque yo tengo php 6 y me funciona <?

Aca esta el codigo, de nuevo:


<?php

$string = file_get_contents('tuarchivo.txt');

$palabras=explode(",",$string);

//var_dump($palabras);

$resultado = array_unique($palabras);

foreach($resultado as $palabras){
echo $palabras." ";
}

?>

Etiquetas: eliminar, palabras, txt
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 07:47.