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

EDI, CMS, Outils, Scripts et API PHP Discussion :

aide sur un script PHP


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2017
    Messages : 9
    Par défaut aide sur un script PHP
    Bonjour, je suis nouveau sur le forum et ai besoin de votre aide.
    Mon gros défaut dans le langage de programmation, ne pas trouver de résonnements logiques à ce que je fais...(php niveau débutant 3eme grade 'lol') bref

    Voici ce que je veux faire contextuellement:
    - interroger des pages web et y rechercher le mot "en stock" -> ok
    - afficher la liste des url dont la page contient ce mot -> ok
    - afficher la liste des url dont la page ne contient pas ce mot -> la je bloque!
    - demander a "CRON" de m'exécuter ce script tout les X temps -> ok

    Et maintenant mon code
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    <?php
    //le mot que tu cherches
    $mot = "en stock";
    //variable pour controler ton stock - pas de stock par defaut
    $EnStock = false;
     
    //tableau de liens
    $mesUrls = array(
    'https://www.hiliq.com/fr/555-e-liquid-flavor',
    'https://www.hiliq.com/fr/the-great-golden-e-liquid-flavor',
    'https://www.hiliq.com/fr/the-red-light-e-liquid-flavor',
    'https://www.taklope.com/vampire-vape-flacon-10ml/1240-black-jack-vampire-vape.html', //url dont la page ne contient pas le mot "en stock"
    'https://www.hiliq.com/fr/b-h-e-liquid-flavor');
     
    //pour chaque ligne du tableau : j'ouvre la page (url) et je cherche le mot "en stock" que j'enregistre dans ma variable $contientenstock (stripos permet d'enlever la casse sur le mot)
    foreach ($mesUrls as $value)
    {
    	$contientEnStock=stripos(file_get_contents($value), $mot);
        if ($contientEnStock === false) 
        {
    		$EnStock = true;
        }
    }
    //si j'ai un résultat, je l'affiche sous forme de liste...
    if ($EnStock==true) 
    {
    	foreach($mesUrls as $resultatOk)
            {
                 echo 'il y a du stock pour ' .$resultatOk. '<br>';
            }
    }
    //si j'ai pas le mot recherché, je l'affiche la liste d'url qui ne contient pas ce mot.
    if ($EnStock==false) 
    {
    	foreach($mesUrls as $resultatNotOk)
            {
                 echo 'il n\'y a de stock pour ' .$resultatNotOk. '<br>';
            }
    }
     
    ?>
    J'ai testé le code avec des url qui dans la page, il y a ce mot, ça fonctionne à merveille.
    En étant filou, évidement on teste en glissant une url dont on sait qu'il n'y as pas le mot dans la page...
    Le résultat m'indique qu'il le trouve dans chaque url, mais ou est ma logique.....Je trouves pas

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    il faut penser "simple" :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <?php
    // ----------------
    // expression recherchée
    $chaine = "en stock";
    // ----------------
    //tableau de liens
    $mesUrls = array('url01','url02','url03','url04');
    // ----------------
    // Résultats avec / sans
    $urls_avec = array();
    $urls_sans = array();
    // ----------------
    //pour chaque ligne du tableau : j'ouvre la page (url) et je cherche le mot "en stock"
    foreach ($mesUrls as $url)
    {
    	if ( stripos(file_get_contents($url), $chaine) !== false ) 
    	{
    		$urls_avec[] = $url; // AVEC
    	} else {
    		$urls_sans[] = $url; // SANS
    	}
    }
    // ----------------
    //si j'ai un résultat, je l'affiche sous forme de liste...
    if ( !empty($urls_avec) ) 
    {
    	echo '<p>Ces URLs contiennent "'.htmlspecialchars($chaine).'" :</p>';
    	echo '<ul>';
    	foreach($urls_avec as $urlOk)
    	{
    		echo '<li><a href="'.$urlOk.'">'.$urlOk.'</a></li>';
    	}
    	echo '</ul>';
    }
    // ----------------
    //si j'ai pas le mot recherché, je l'affiche la liste d'url qui ne contient pas ce mot.
    if ( !empty($urls_sans) ) 
    {
    	echo '<p>Ces URLs ne contiennent pas "'.htmlspecialchars($chaine).'" :</p>';
    	echo '<ul>';
    	foreach($urls_sans as $urlNotOk)
    	{
    		echo '<li><a href="'.$urlNotOk.'">'.$urlNotOk.'</a></li>';
    	}
    	echo '</ul>';
    }
    N.B. stripos() : là, ça prend aussi en compte le contenu des balises, des attributs des balises, des scripts,... bref : tout.
    Pour mieux faire, il faudrait parser le code, pour ne chercher que dans le contenu effectif (ou dans une partie/balise précise du code)

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2017
    Messages : 9
    Par défaut A moi de comprendre la solution
    Merci infiniment pour ton aide jreaux62.
    Comme dans le titre, je vais de tenter de comprendre et de le ré-appliquer à d'autre fonction.
    Le résultat est celui espéré sauf je dois inverser quelque chose car les URL ou je sais qu'il y a ce mot m'affiche qu'il n'y en a pas et inversement.

    je m'auto-réponds en modifiant:

    il y avait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( stripos(file_get_contents($url), $chaine) !== false )
    que j'ai modifié par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( stripos(file_get_contents($url), $chaine) == false )

  4. #4
    Invité
    Invité(e)
    Par défaut
    En fait, non. Mon script est juste.

    Par contre, en testant, on voit que les URLs ne sont pas correctement lus, génèrent une erreur, et donc ne peuvent pas être comparées.

    Essaie avec un autre site que hiliq.com

    Petite modif, pour supprimer les balises (en conservant les contenus) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    foreach ($mesUrls as $url)
    {
    	if ( @stripos( strip_tags(' '.file_get_contents($url)), $chaine ) === false ) 
    	{
    		$urls_sans[] = $url; // SANS
    	} else {
    		$urls_avec[] = $url; // AVEC
    	}
    }
    l'@ évite l'affichage de l'erreur (warning dans l'URL n'est pas lisible).

Discussions similaires

  1. [PHP-JS] Besoin d'expertise sur petit script php
    Par Quetzalcoatl dans le forum Langage
    Réponses: 9
    Dernier message: 02/07/2006, 18h34
  2. A l'aide svp j'ai de gros problemes sur un script php
    Par schtek2 dans le forum Langage
    Réponses: 1
    Dernier message: 24/04/2006, 01h25
  3. Besoin d'aide sur un script SQL de recherche
    Par agougeon dans le forum Langage SQL
    Réponses: 5
    Dernier message: 26/10/2005, 11h40

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