Ajuda Como Salvar csv sem repetir conteúdo usando php

  • Autor Autor Norlan30
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
N

Norlan30

Beta
Verificación en dos pasos activada
Usuário com poucas negociações! Use sempre o saldo do ForoBeta!
Busco una manera de guardar variables en un archivo csv les dejo un ejemplo de lo que e logrado:

Código PHP:
HTML:
[PHP]$enlace="http://php.net/manual/es/function.fgetcsv.php";

$Z = md5($enlace);
$A = substr($Z,0,2); //Obtenemos los primeros 2 caracteres del hash
$B = substr($Z,16,2); //Obtenemos 2 caracteres a partir del caracter 16
$C = substr($Z,30,2); //Obtenemos 2 caracteres a partir del caracter 30
$D = substr($Z,23,1); //Obtenemos 1 caractere a partir del caracter 23
$name = $A.$B.$C.$D; //Juntamos todo    

$f = fopen("demosaved.csv", "a");
fputcsv($f, array($name, $enlace));
fclose($f); [/PHP]
Explico la variable $enlace no es la misma cuando actualizo la pagina pero en ocasiones se repite y se termina por guardar aunque esta repetida .

Lo que busco es alguna manera de comparar el contenido del csv y si se encuentra repetida dentro del archivo csv no la guarde ... Gracias
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
tendrias que volver a convertir el csv a variables y buscar si hay repetidas...
 
hay un sitio web que si le metes un texto o un archivo detecta los repetidos y los borra yo lo usé un tiempo te recomiendo buscarlo creo que era dentro de la web TextMechanic pero no estoy nada seguro

- - - Actualizado - - -

Edit lo encontré Remove Duplicate Lines ? Text Mechanic?
 
tendrias que volver a convertir el csv a variables y buscar si hay repetidas...
Hola e intentado usando esta forma

PHP:
$id = '9b4d789';

$f = fopen("demosaved.csv", "r");
$result = false;
while ($row = fgetcsv($f, 0, ",")) {
        if ($row[0] == $id) {
            $f1 = fopen("demosaved.csv", "a");
            fputcsv($f1, array($name, $enlace));
            fclose($f)
            break;
        }
    }
    fclose($f);

Que encuentra el resultado que es igual a la variable $id . pero no logro editarlo para que funcione para guardar las lineas sin repetirlas

- - - Actualizado - - -

hay un sitio web que si le metes un texto o un archivo detecta los repetidos y los borra yo lo usé un tiempo te recomiendo buscarlo creo que era dentro de la web TextMechanic pero no estoy nada seguro

- - - Actualizado - - -

Edit lo encontré Remove Duplicate Lines ? Text Mechanic?
Gracias por el dato pero busco solo usar php . no herramientas externas
 
Última edição:
Hola e intentado usando esta forma

PHP:
$id = '9b4d789';

$f = fopen("demosaved.csv", "r");
$result = false;
while ($row = fgetcsv($f, 0, ",")) {
        if ($row[0] == $id) {
            $f1 = fopen("demosaved.csv", "a");
            fputcsv($f1, array($name, $enlace));
            fclose($f)
            break;
        }
    }
    fclose($f);

Que encuentra el resultado que es igual a la variable $id . pero no logro editarlo para que funcione para guardar las lineas sin repetirlas

- - - Actualizado - - -


Gracias por el dato pero busco solo usar php . no herramientas externas

tienes que leer todo el archivo, pasarlo a variables php, recorrerlas, sacar los duplicados y guardar de nuevo
 
tienes que leer todo el archivo, pasarlo a variables php, recorrerlas, sacar los duplicados y guardar de nuevo

Bien encontré una solución simple Gracias por el dato.

PHP:
$enlace="http://php.net/manual/es/function.fgetcsv.php";

$Z = md5($enlace);
$A = substr($Z,0,2); //Obtenemos los primeros 2 caracteres del hash
$B = substr($Z,16,2); //Obtenemos 2 caracteres a partir del caracter 16
$C = substr($Z,30,2); //Obtenemos 2 caracteres a partir del caracter 30
$D = substr($Z,23,1); //Obtenemos 1 caractere a partir del caracter 23
$name = $A.$B.$C.$D; //Juntamos todo    

$RN = $name.",".$enlace;

$pagina = file_get_contents('demosaved.csv');
$pos = strpos($pagina, $RN);

// Nótese el uso de ===. Puesto que == simple no funcionará como se espera
if ($pos === false) {
    echo "La cadena '$RN' no fue encontrada en la cadena dada <br/>";
$f = fopen("demosaved.csv", "a");
fputcsv($f, array($name, $enlace));
fclose($f);
} else {
    echo "La cadena '$RN' fue encontrada en la cadena dada";
    echo " y existe en la posición $pos";
}
 
Última edição:
Porqué no guardas $Z en el CSV?
 
Voltar
Topo