Eliminare i duplicati

  • Creatore Discussione Creatore Discussione zerobit
  • Data di inizio Data di inizio

zerobit

Utente Attivo
10 Mar 2012
35
0
0
Salve ragazzi , avete presente uno di quei problemi tipo colla sotto i
piedi ?

Per farla breve dovrei eliminare tutte le voci doppie dai dati che arrivano
tramite un form



Ecco un esempio :

mercedes
punto
panda
panda
panda
croma
tempra
tempra
tempra
tempra
regata



Esiste un modo per eliminare i termini uguali in modo da ottenere poi
questo risultato ? :

mercedes
punto
panda
croma
tempra
regata



Potrei usare qualcosa del genere , ma non so quali voci doppie si presenteranno ! :crying:


PHP:
<?php


$au=array('panda','tempra','panda');

$newArray=array_unique($au);

foreach($newArray as $strItem){
   echo $strItem.'
';
}


?>










.
 
Come disse quello che si impiccò per i piedi , non è questo il verso giusto


Forse ci vedo sfuocato a causa del caldo ma così non mostra a video nessun risultato !


PHP:
$data = explode("\n", $_POST['nometextarea']);
$data = array_unique($data);
$data = implode("\n", $data); 

echo "data";


Grazie intanto per l'interesse mostrato
 
Prova a mettere uno spazio al posto di \n

PHP:
<?php
$_POST['nometextarea'] = "panda punto panda punto croma punto croma panda";

$data = explode(" ", $_POST['nometextarea']);
$data = array_unique($data);
$data = implode(" ", $data); 

echo $data;
?>

In ogni caso doveva stamparti qualcosa anche con \n

PS:
hai scritto echo "data"; invece che echo $data;
 
Ultima modifica:
GRAZIE criric

Non ci vedevo più dalla fame e ho perso qualche virgola , in effetti ai ragione il codice di Alessandro funziona se invece del ritorno a capo \n metto uno spazio vuoto , ma a condizione che il testo non sia incolonnato

Così funziona :

mercedes punto panda panda panda croma tempra tempra tempra tempra
regata

Così non funge :


mercedes
punto
panda
panda
panda
croma
tempra
tempra
tempra
tempra
regata


Purtroppo però deve funzionare anche con l'incolonnamento , qualche idea ?


Ciao ! :byebye:




.
 
Prova così:
PHP:
<?php
$_POST['nometextarea'] = "panda punto panda punto croma punto croma panda";

if (strlen($_POST['nometextarea'], "\n") !== 0) {
    $char = "\n";
} else {
    $char = ' ';
}

$data = explode($char, $_POST['nometextarea']);
$data = array_unique($data);
$data = implode($char, $data); 

echo $data;
?>
 
Credo che Alessandro volesse scrivere strpos() non strlen()

Ho notato però che se i dati sono separati alcuni con lo spazio e alcuni con il ritorno a capo l'array_unique nonfunziona a dovere

allora ho pensato che si pèotrebbe trasformare i ritorni in spazi
PHP:
$data = str_replace(array("\n", "\r"), " ", $_POST['nometextarea']);
$data = str_replace(array("  "), " ", $data);

$data = explode(" ", $data);
$data = array_unique($data);
$data = implode(" ", $data);

dipende comunque da come ti arriva la stringa
 
Purtroppo mi ritrovo con un Wrong parameter count for strlen() su questa riga if (strlen($_POST['chiave'], "\n") !== 0) {


Comunque panda punto panda punto croma punto croma panda a me non serve perchè non posso sapere a priori quali saranno le voci duplicate

PHP:
$_POST['nometextarea'] = "panda punto panda punto croma punto croma panda";


Il primo codice che hai postato è funzionante praticamente adesso basterebbe tirare su il testo incollonato eliminando gli spazi ( come nell'esempio che ho postato ) , stavo provando infatti a usare trim ma ancora non sono riuscito nell'intento


Ciao e ancora grazie





.
 
Fantastico Criric hai avuto un'ottima idea !

Finalmente sembra che così il problema sia stato risolto :fonzie:

Adesso non mi rimane che rimettere insieme il tutto e ritestare il codice

Ringrazio per i suggerimenti e per l'ottimo aiuto che ho ricevuto :elvis:

Un salutone anche ad Alessandro






.
 

Discussioni simili