Page 1 sur 1

avoir des valeur unique dans un tableau (preg_match_all)

Posté : 06 août 2011, 01:58
par hakazizi
Bonjour, j'ai rechercher plusieurs solutions mais je n'arrive a rien.
Je voudrais que preg_match_all ne me retourne que des valeurs uniques.
Ceci avant traitement dans une base de donnée.
Le problème que j'ai dans ce code provient de la récupération des valeurs du tableau.
merci
<?php
$sitevisite='http://www.larosedelorient.com';
$site=file_get_contents($sitevisite);
//on recherche les lien de la page
preg_match_all('#<a.+href="(.+)"#iU',$url);
$url1=array_unique($url[1]);
?>

Re: avoir des valeur unique dans un tableau (preg_match_all)

Posté : 06 août 2011, 02:36
par Blowingfish
Je ne suis pas sûr d'avoir bien compris ... mais voyant le code, j'ai compris que tu voulais afficher tous les liens qui est sur la page web, mais tu en affiches que un.

Tu dois faire une boucle pour tout afficher voici un exemple :
    $page = file_get_contents('http://www.le site web.com');
    preg_match_all
    (
    'Ta Regex (expression régulière)',
    $page,
    $page_array
    );
    

    $array = count($page_array[0]);
    while($array !=0 )
    {
           $array --;
           echo '<a href="'.$page_array[$array].'" >Voici un lien '.$page_array[$array].'</a>
           <br/> ';
    }
Si j'ai mal compris ta question, essais d'être plus clair stp

Re: avoir des valeur unique dans un tableau (preg_match_all)

Posté : 06 août 2011, 04:25
par devlop78
non $url1 devrait être bon mais il est un tableau. Si tu as des "doublons" ce ne sont pas exactement les mêmes (ou alors il y a un beug dans array_unique).

Re: avoir des valeur unique dans un tableau (preg_match_all)

Posté : 07 août 2011, 00:14
par hakazizi
bonjour,
Tout d'abord merci à Blowingfish et à devlop78.
Tout fonctionne le dedoublonnage s'effectue correctement mais dans ma boucle while je n'arrive pas a en sortir tous les liens.
J’ai oublié une partie du code sorry.
Le break s'active au premier lien car la valeur de $url1[1] à été supprimé par array_unique et je n'arrive pas à redéfinir la suite numérique.
$url1[0]=page1.htm
$url1[1]=page1.htm //Cette valeurs a été supprimer et mon break; entre en action prématurément.
$url1[2]=page2.htm
Et ce que je voudrais faire c’est :
$url1[0]=page1.htm
$url1[1]=page2.htm
$url1[2]=page3.htm etc...
Chose que je n'arrive pas à faire.
merci
$sitevisite='http://www.larosedelorient.com';
$site=file_get_contents($sitevisite);
//on recherche les lien de la page
preg_match_all('#<a.+href="(.+)"#iU',$site,$url);
$url1=array_unique($url[1]);
$i=0;
while($url1){//on fait une boucle sur les lien
$url2=@$url1[$i];
$i++;
if(@$url1[$i]==''){break;}
}

Re: avoir des valeur unique dans un tableau (preg_match_all)

Posté : 07 août 2011, 00:43
par moogli
c'est parce que tu ne sais pas parcourir un tableau correctement :)

ce que tu fait est plus que risqué (d'ailleurs t'a un soucis) et sémantiquement incorrect !

utilise la boucle foreach pour parcourir le tableau !

d'ailleurs ce que tu fait ne fait qu'affecter le dernier élément de ce tableau à la variable $url2; autant prendre directement ce dernier élément (soit count -1 soit un array_pop)


@+