avoir des valeur unique dans un tableau (preg_match_all)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : avoir des valeur unique dans un tableau (preg_match_all)

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

par moogli » 07 août 2011, 00:43

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)


@+

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

par hakazizi » 07 août 2011, 00:14

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)

par devlop78 » 06 août 2011, 04:25

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)

par Blowingfish » 06 août 2011, 02:36

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

avoir des valeur unique dans un tableau (preg_match_all)

par hakazizi » 06 août 2011, 01:58

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]);
?>