$uno=array(0 => 1, 1 => 'a');
$due=array(0 => 2, 1 => 'b');
$tre=array(0 => 3, 1 => 'a');
$uno=array(0 => 1, 1 => 'a');
$uno=array(0 => 2, 1 => 'b');
$uno=array(0 => 3, 1 => 'a');
<!= altro html vario =>
<li class="track" data-ec-name="1 - valore inutile - a" data-ec-creative="altri dati>contenuto</li>
<!= altro html vario =>
<li class="track" data-ec-name="2 - valore inutile - b" data-ec-creative="altri dati>contenuto</li>
<!= altro html vario =>
<li class="track" data-ec-name="3 - valore inutile - a" data-ec-creative="altri dati">contenuto</li>
<!= altro html vario =>
//includo la classe
require 'simple_html_dom.php';
// carico pagina html
$html = file_get_html('http://www.pagina.com');
// Cerco tag che mi interessa attraverso il valore dell'attributo 'class' (purtroppo sembra che la classe DOM non consideri 'data-ec-name' un attributo quindi diventa un po cervellotica a questo punto)
$codes = $html->find('li[class=track]');
//ottengo array dei risultati
foreach($codes as $code) {
//listo array
for($i = 0; $i < count($code); $i++) {
//purtroppo la classe DOM che uso non riconosce 'data-ec-name='
//quindi cerco la porzione di stringa che mi interessa in questo modo
$pos1 = strpos($code, 'data-ec-name=');
$pos2 = strpos($code, ' data-ec-creative=');
$code_str = substr($code,$pos1,$pos2-$pos1);
//rimuovo le porzioni di stringa che non mi servono
$code_find = array('data-ec-name=', '"', ' - valore inutile - ');
$code_replace = array('', '', '-');
//ottengo la stringa finale
$code_string_final = str_replace($code_find, $code_replace, $code_str);
//creo la lista dei valori
list ($code, $title) = explode("-", $code_string_final);
//stampo risultato
echo $code .'-'. $title . '<br>';
}
}
<?php
//includo la classe
require 'simple_html_dom.php';
// carico pagina html
$html = file_get_html('example.html');
// Cerco tag che mi interessa attraverso il valore dell'attributo 'class' (purtroppo sembra che la classe DOM non consideri 'data-ec-name' un attributo quindi diventa un po cervellotica a questo punto)
$codes = $html->find('li[class=track]');
// VETTORE VALORI UNICI
$unique = array();
//ottengo array dei risultati
foreach($codes as $code) {
//listo array
for($i = 0; $i < count($code); $i++) {
//purtroppo la classe DOM che uso non riconosce 'data-ec-name='
//quindi cerco la porzione di stringa che mi interessa in questo modo
$pos1 = strpos($code, 'data-ec-name=');
$pos2 = strpos($code, ' data-ec-creative=');
$code_str = substr($code,$pos1,$pos2-$pos1);
//rimuovo le porzioni di stringa che non mi servono
$code_find = array('data-ec-name=', '"', ' - valore inutile - ');
$code_replace = array('', '', '-');
//ottengo la stringa finale
$code_string_final = str_replace($code_find, $code_replace, $code_str);
//creo la lista dei valori
list ($code, $title) = explode("-", $code_string_final);
//stampo risultato
if (!in_array($title, $unique)) { // se il valore non esiste nell'array
echo $code .'-'. $title . '<br>'; // lo stampo
array_push($unique, $title); // lo aggiungo nell'array
// non verra più stampato
}
}
}
?>
Ciao. prova così.
PHP:<?php //includo la classe require 'simple_html_dom.php'; // carico pagina html $html = file_get_html('example.html'); // Cerco tag che mi interessa attraverso il valore dell'attributo 'class' (purtroppo sembra che la classe DOM non consideri 'data-ec-name' un attributo quindi diventa un po cervellotica a questo punto) $codes = $html->find('li[class=track]'); // VETTORE VALORI UNICI $unique = array(); //ottengo array dei risultati foreach($codes as $code) { //listo array for($i = 0; $i < count($code); $i++) { //purtroppo la classe DOM che uso non riconosce 'data-ec-name=' //quindi cerco la porzione di stringa che mi interessa in questo modo $pos1 = strpos($code, 'data-ec-name='); $pos2 = strpos($code, ' data-ec-creative='); $code_str = substr($code,$pos1,$pos2-$pos1); //rimuovo le porzioni di stringa che non mi servono $code_find = array('data-ec-name=', '"', ' - valore inutile - '); $code_replace = array('', '', '-'); //ottengo la stringa finale $code_string_final = str_replace($code_find, $code_replace, $code_str); //creo la lista dei valori list ($code, $title) = explode("-", $code_string_final); //stampo risultato if (!in_array($title, $unique)) { // se il valore non esiste nell'array echo $code .'-'. $title . '<br>'; // lo stampo array_push($unique, $title); // lo aggiungo nell'array // non verra più stampato } } } ?>
var_dump($title);
Hai citato il mio messaggio perché hai copiato, incollato ed eseguito il mio codice? Sicuro di aver creato il seguente vettore?
PHP:// VETTORE VALORI UNICI $unique = array();
Se specifichi bene cosa non funziona (il codice che esegui e l'output ricevuto) magari possiamo darci un'occhiata.
<?
//Class include
require 'simple_html_dom.php';
$unique = array();
$uri = 'https://www.beatport.com/artist/avengers/203716/tracks';
$bp_html = file_get_html($uri);
// Find track code and track title
$bp_tracks_codes = $bp_html->find('li[class=track]');
foreach ($bp_tracks_codes as $bp_track_code){
$bp_t_code_pos1 = strpos($bp_track_code, 'data-ec-name="');
$bp_t_code_pos2 = strpos($bp_track_code, '" data-ec-creative=');
$bp_t_code_str = substr($bp_track_code,$bp_t_code_pos1,$bp_t_code_pos2-$bp_t_code_pos1);
$bp_t_code_find = array('data-ec-name=', '"', ' - track - ');
$bp_t_code_replace = array('', '', '-');
$bp_track_code = str_replace($bp_t_code_find, $bp_t_code_replace, $bp_t_code_str);
list ($track_code, $track_title) = explode("-", $bp_track_code);
//Removing duplicate entry
if (!in_array($track_code, $unique)) {
$audio_link = str_replace(' ', '', 'http://geo-samples.beatport.com/lofi/' . $track_code . '.LOFI.mp3');
echo '<b>' .$track_title . '</b><br><audio preload="auto" src="' .$audio_link. '" controls="controls"></audio><hr>';
array_push($unique, $track_code);
}
}
?>
susa non ti seguoho stampato i track codes commentando tutto l'if
sono univoci !PHP:echo $track_code."<br />"; // if (!in_array($track_code, $unique)) {
echo $track_code." - ".$track_title."<br />";
// if (!in_array($track_code, $unique))
// {
// $audio_link = str_replace(' ', '', 'http://geo-samples.beatport.com/lofi/' . $track_code . '.LOFI.mp3');
// echo '<b>' .$track_title . '</b><br><audio preload="auto" src="' .$audio_link. '" controls="controls"></audio><hr>';
// array_push($unique, $track_code);
// }
track track
code title
7591546 Beautiful Destination
8300233 Beautiful Destination
6340324 City Lights
6839203 City Lights
6633990 Connection To Space
3095788 Fuckin' Commercial Music
3095789 Fuckin' Commercial Music
3095790 Fuckin' Commercial Music
3095604 Horny Level
7726425 Intoxicated
3115838 Kdabra
7318555 Kick in Ass
2027478 Life's A Bitch
6340329 Liquid
7726424 Lost World
6633991 Nasty
3358948 Powermesh
6340328 Prog'n Roll
7008387 Prog'n Roll
6504357 Randomise
7591545 Rastafari
2027477 Revenge
2712509 Revenge
3880685 Talking
3880686 Talking
3880687 Talking
4204306 Talking
3095791 This Is Trash
3095792 This Is Trash
7726426 Tomorrow People
6504358 Trinity
7558852 Trinity
7318556 True Killer
7701586 True Killer
3095793 Warfare
if (!in_array($track_title, $unique))
{
$audio_link = str_replace(' ', '', 'http://geo-samples.beatport.com/lofi/' . $track_code . '.LOFI.mp3');
echo '<b>' .$track_title . '</b><br><audio preload="auto" src="' .$audio_link. '" controls="controls"></audio><hr>';
array_push($unique, $track_title);
}
<?php
function elimina_duplicati($a){
for($k=0;$k<(count($a)-1);$k++){
for($j=($k+1); $j<count($a);$j++){
if($a[$k][1]==$a[$j][1]){
$da_elim[$j]=$j;
}
}
}
foreach($da_elim as $chiave){
unset($a[$chiave]);
}
return $a;
}
/*---test-----*/
$title[]=array(0=>'1', 1=>'a');
$title[]=array(0=>'2', 1=>'a');//uguale a 1
$title[]=array(0=>'3', 1=>'b');
$title[]=array(0=>'4', 1=>'c');
$title[]=array(0=>'5', 1=>'d');
$title[]=array(0=>'6', 1=>'e');
$title[]=array(0=>'7', 1=>'c');//uguale a 4
echo "<pre>";
var_dump(elimina_duplicati($title));
echo "<pre>";
?>