Ayuda Como Guardar csv sin repetir contenido usando php

  • Autor Autor Norlan30
  • Fecha de inicio Fecha de inicio
N

Norlan30

Beta
Verificación en dos pasos activada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de 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
 
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 - - -

Gracias por el dato pero busco solo usar php . no herramientas externas
 
Última edición:

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 edición:
Porqué no guardas $Z en el CSV?