IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Boucle contenu tableau et récupération dans un strpos


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    graphiste inforgraphiste monteur compositeur
    Inscrit en
    Septembre 2012
    Messages
    38
    Détails du profil
    Informations professionnelles :
    Activité : graphiste inforgraphiste monteur compositeur

    Informations forums :
    Inscription : Septembre 2012
    Messages : 38
    Points : 21
    Points
    21
    Par défaut Boucle contenu tableau et récupération dans un strpos
    je n'arrive pas a trouver comment faire :

    1 : j'ai une table 'Linkyficator_exclude_plugin' dans la quelle il y a une colonne 'link_exclude'

    il y a une seule ligne avec du contenu avec cette syntaxe : text1,text2,text3,text4,..... etc

    2 : ensuite je récupérè ce contenu et je le split pour faire un tableau grace au délimiteur virgule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
       // Va chercher le contenu de la colone link_exclude de la table WP_LINK_EXCLUDE_TABLE
        $dbexclude = "SELECT `link_exclude` FROM `" . WP_LINK_EXCLUDE_TABLE . "`";
     
        // Mise en variable du contenu
        $list_dbexclude = mysql_query($dbexclude);
     
        // Boucle sur le contenu en tableau
        $rowdbexclude = mysql_fetch_array($list_dbexclude);
     
        // Splitt grace à la virgule et creer un tableau avec le contenu splitté
        $Array_exclude = explode(',', $rowdbexclude['link_exclude']);
     
        // Dump
        var_dump( $Array_exclude);

    3 : maintenant que j'ai mon tableau (text1 text2 ..) qui sont maintenant dans une ligne de tableau chacun individuellement, comment je peut faire pour que chacun des text se mettent a l'intérieur d'un strpos :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    (strpos($url, 'text1') == false)AND
    (strpos($url, 'text2') == false)AND
    (strpos($url, 'text3') == false)
    ...
    Sachant que le nombre de text peut varier de 0 a .. infini ^^

    je pense qu'il faut faire une boucle pour parcourir le tableau $Array_exclude et récupérer chaque ligne mais je comprend pas comment faire la suite..



    Merci d'avance !

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    quelque chose dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    foreach ($Array_exclude as $v)
    {
        if (strpos($url, $v) === false)
        {
            // non trouvé
        }
        else
        {
            // trouvé
        }
    }

  3. #3
    Membre à l'essai
    graphiste inforgraphiste monteur compositeur
    Inscrit en
    Septembre 2012
    Messages
    38
    Détails du profil
    Informations professionnelles :
    Activité : graphiste inforgraphiste monteur compositeur

    Informations forums :
    Inscription : Septembre 2012
    Messages : 38
    Points : 21
    Points
    21
    Par défaut
    Hello !

    oui je vois ce que tu veut faire, j'ai quand même une question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if (strpos($url, $v) === false)
    $v correspond a quoi en réalité ???

    car j'ai besoin d'avoir tout les 'text' du tableau chacun dans un strpos, a l’exécution du script.

    du coup le foreach fait t'il en réalité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (strpos($url, 'text1') == false)AND
    (strpos($url, 'text2') == false)AND
    (strpos($url, 'text3') == false)
    ?

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    $v prend successivement les valeurs 'text1', 'text2'...

    Après j'ai pas compris : tu veux t'assurer qu'aucun 'text' n'est présent dans $url c'est ça ?

  5. #5
    Membre à l'essai
    graphiste inforgraphiste monteur compositeur
    Inscrit en
    Septembre 2012
    Messages
    38
    Détails du profil
    Informations professionnelles :
    Activité : graphiste inforgraphiste monteur compositeur

    Informations forums :
    Inscription : Septembre 2012
    Messages : 38
    Points : 21
    Points
    21
    Par défaut
    en fait le strpos est dans une boucle déja et le strpos me sert a exclure des url par une expression (text1,text2,text3)

    en gros si text1 est compris dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $url (== false) {script continu...}
    du coup j'ai besoins que l'or de l’exécution de mon script toute les valeur de $Array_exclude soit dans un strpos

    le contenu de $Array_exclude (text1,text2,text3) sont des expressions qu'un utilisateur peut paramétrer (sur une page setting et cela insert dans la table WP_LINK_EXCLUDE_TABLE) du coup il peut en mettre 1 comme 1000

    moi je récupère cela pour les mettre dans des strpos qui sont en faire des filtres

    et du coup il faut que tout les expression soit chacune dans un strpos et ma question était est ce que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach ..... strpos($url, $v) === false
    agis comme si je faisais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (strpos($url, 'text1') == false)AND
    (strpos($url, 'text2') == false)AND
    (strpos($url, 'text3') == false)

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Purée, tes explications sont claires que pour toi
    Donc à ma question : je suppose que c'est oui : tu veux t'assurer qu'aucune valeur du tableau $Array_exclude n'est présente dans $url donc ceci devrait faire l'affaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    $found = false;
    foreach ($Array_exclude as $v)
    {
        if (stripos($url, $v) !== false)
        {
            // on s'arrête dès qu'une valeur est trouvée
            $found = true;
            break;
        }
    }
     
    if ($found)
    {
        // un des 'text' est présent dans $url   
    }
    else
    {
        // aucun 'text' trouvé dans $url
    }

  7. #7
    Membre à l'essai
    graphiste inforgraphiste monteur compositeur
    Inscrit en
    Septembre 2012
    Messages
    38
    Détails du profil
    Informations professionnelles :
    Activité : graphiste inforgraphiste monteur compositeur

    Informations forums :
    Inscription : Septembre 2012
    Messages : 38
    Points : 21
    Points
    21
    Par défaut
    Merci !!
    du coup j'ai test ceci :

    *Contenu de la colonne link_exclude : "test1,test2,test3,test4"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    	$url = 'http://www.test1.com';
    	// Va chercher le contenu de la colone link_exclude de la table WP_LINK_EXCLUDE_TABLE
    	$dbexclude = "SELECT `link_exclude` FROM `" . WP_LINK_EXCLUDE_TABLE . "`";
    	// Mise en variable du contenu
    	$list_dbexclude = mysql_query($dbexclude);
    	// Boucle sur le contenu en tableau
    	$rowdbexclude = mysql_fetch_array($list_dbexclude);
    	// Splitt grace à la virgule et creer un tableau avec le contenu splitté
    	$Array_exclude = explode(',', $rowdbexclude['link_exclude']);
    	// Parcours le tableau $>$
    	foreach ($Array_exclude as $v)
    {
        if (!strpos($url, $v) == false)
        {
            echo 'lien présent <br/>';
        }
        else
        {
            echo 'lien absent <br/>';
        }
    }
    // visualisation du contenu de la table
    echo $rowdbexclude['link_exclude'];
    ceci fonctionne et affiche bien :
    lien présent
    lien absent
    lien absent
    lien absent
    test1,test2,test3,test4


    En revanche maintenant je n'arrive pas a l'implémenter dans mon script la ou il y a les :
    (Filtres principaux ( Exclusion de certaines url comprenant les expressions suivantes ))

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    $result = mysql_query("SELECT `post_name`,`post_content`,`post_modified`,`ID` FROM `$rowfromsql` WHERE $rowwheresql LIKE '$rowlikesql'");
     
          // On boucle sur les résultats de la requête
          while($row = mysql_fetch_row($result)) {
            // Utilise l'expression rationnelle qu'on a créée sur le contenu d'un post
            preg_match_all($masque, $row[1], $matches, PREG_SET_ORDER);
     
            // Compter le nombre de résultats
            $nb_resultats = count($matches);
     
            // Parcourir le tableau des résultats
            for($i = 0; $i < $nb_resultats; $i++) {
              $url = $matches[$i][0];			
     
              // Filtres principaux ( Exclusion de lecteur(s) par checkbox )
              if((strpos($url, $_POST['mixturecheck']) == false) AND (strpos($url, $_POST['watcheck']) == false) AND (strpos($url, $_POST['tagtelecheck']) == false) AND (strpos($url, $_POST['123videocheck']) == false) AND (strpos($url, $_POST['megacheck']) == false) AND (strpos($url, $_POST['purevidcheck']) == false) AND (strpos($url, $_POST['rutubecheck']) == false) AND (strpos($url, $_POST['putlockercheck']) == false) AND (strpos($url, $_POST['socksharecheck']) == false) AND (strpos($url, $_POST['youtubecheck']) == false) AND (strpos($url, $_POST['vimeocheck']) == false) AND 
              // Filtres principaux ( Exclusion de certaines url comprenant les expressions suivantes )
    		  (strpos($url, 'watchit') == false) AND (strpos($url, '.png') == false) AND (strpos($url, 'bayimg') == false) AND (strpos($url, 'whyintheworld') == false))	  
    		   {
     
    // suite du script
    $url est dans une boucle, et je ne sais pas comment placer mettre le foreach ainsi que (!strpos($url, $v) == false) que je souhaite mettre avec la liste des filtre principaux..

  8. #8
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    faudrait que tu expliques le but de ce code car je ne le saisis pas, désolé.
    Le regex sur le select c'est censé produire quoi ?
    Ensuite : "Exclusion de lecteur(s) par checkbox" : késako ?
    Tu as vérifié que tes $_POST étaient bien présents avant de les utiliser ?
    A tes cases à cocher tu as affecté une valeur mais sache qu'à la soumission du formulaire il est tout à fait possible de te passer n'importe quelle valeur (différente de celle inscrite sur le code de ton formulaire) : je pense que tu devrais procéder autrement vu l'usage que t'en fais de ces valeurs.

    Enfin quand je mets (strpos($url, $v) === false) c'est pas pour que tu le remplace par (strpos($url, $v) == false), il y a une différence de taille regarde :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $a = stripos('abcd', 'a'); // ici $a = 0
    if ($a == false)           // ce test va considèrer que 'a' n'est pas présent dans 'abcd' !!!
    {
        echo 'non présent';  
    }
    Avec ==, zéro est équivalent à false en valeur alors que zéro est différent de false en type.
    Avec ===, on teste la valeur et le TYPE (c'est pas pareil).
    Regarde ici

  9. #9
    Membre à l'essai
    graphiste inforgraphiste monteur compositeur
    Inscrit en
    Septembre 2012
    Messages
    38
    Détails du profil
    Informations professionnelles :
    Activité : graphiste inforgraphiste monteur compositeur

    Informations forums :
    Inscription : Septembre 2012
    Messages : 38
    Points : 21
    Points
    21
    Par défaut
    Effectivement je connais ce type d'opérateur, c'est assez difficile a expliquez le script mais je vais essayer :

    je n'arrive pas a etre tres clair je m'en excuse..

    le but du script est de récupérer des url dans la bdd et des les tester une par une (il y a un systeme d'exclusion grace aux values des checkbox) :

    1 : connexion a la bdd
    2 : function dead_links_checker {
    3 : Paramétrage de la RegExep (pour récupérer url)
    4 : Création et envoi de la requête. pour chercher le contenu sur le quel appliquez la regex
    5 : On boucle sur les résultats de la requête
    6 : Parcourir le tableau des résultats (urls)
    7 : Filtres principaux ( checkbox et autre filtres )
    [ ici je récupérè les values des checkbox cochées pour les mettre dans leur strpos respectif :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type='checkbox' id='c1' name='123videocheck' value='123video' <?php if(!empty($_POST['123videocheck'])){echo'checked="checked"';}?>/>
    			  <label for='c1'><span></span>123Video</label><br />
    ici la value 123video se retrouve dans (si checker) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (strpos($url, $_POST['123videocheck']) == false)
    mais cela fonctionne comme je le souhaite en revanche il y a un endroit ou j'ai mis en commentaire : // Filtres principaux ( Exclusion de certaines url comprenant les expressions suivantes )

    ici les strpos sont inscrite en dure dans le script, je souhaite donner l'opportunité a un utilisateur de mettre autant d'expression qu'il souhaite grace a une page de configuration qui lui permet d'inscrire les textes qu'il souhaite pour l'exemple la j'ai mis "text1,text2,text3,text4" qui est inséré tel quel dans la bdd

    je souhaite ensuite que ces texts soit récupéré splitté en tableau grace au délimiteur 'virgule', puis ensuite pris un par un dans un strpos ce que ton code que tu m'a indiquez fait tres bien grace a foreach.

    en revanche je ne sais pas comment mettre ce code a la place des [// Filtres principaux ( Exclusion de certaines url comprenant les expressions suivantes )]

    En gros je souhaite rendre les strpos dynamique et parametrable en récupérant une chaine de carracretes dans la bdd..

    Ce que j'ai indiquez dans ma reponse précédante : (// suite du script), n'est que différente méthode suivant l'url a tester pour savoir si il y a erreur 404, 410, 301, ou si dans le code source suivant l'url il y a un mot spécifique, et les 2 résultat possible sont pour chaque test // 1 : LIENS MORT ou 2 : LIEN GOOD

    une fois le lien vérifier :
    function dead_links_checker ();

    et rebelotte pour la prochaine url a tester

    je ne sais pas si c'est plus clair

Discussions similaires

  1. [Stream] Mettre le contenu d'un File dans un tableau de byte
    Par JohnBlatt dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 25/08/2006, 15h18
  2. injecter le contenu d'un fichier dans un tableau
    Par rogerio dans le forum C++
    Réponses: 5
    Dernier message: 03/05/2006, 17h37
  3. [MySQL] Lister le contenu d'une table dans un tableau HTML
    Par carmen256 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 03/04/2006, 20h40
  4. Réponses: 4
    Dernier message: 26/01/2006, 15h37
  5. Réponses: 3
    Dernier message: 11/01/2006, 18h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo