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 :

Parsage d'urls complexes


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Parsage d'urls complexes
    Bonjour,

    J'ai un petit souci et je n'arrive pas à trouver la réponse sur le net.

    Je travail sur un script qui doit récupérer et retraiter des urls dans des pages webs. La regex qui me pose problème a pour but de récupérer les urls associées à des images.

    La voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    preg_match_all('#<a href=("|\')([^"\']*)("|\')[^>]*><img src=("|\')[^"\']*("|\')[^>]*></a>#', $contenu, $pages_images);
    Elle fonctionne, mais il manque un détail pour qu'elle soit parfaite. Il faut qu'elle soit capable de traiter les liens si des choses sont insérées entre <a et href, ou entre <img et src.

    Par exemple, si sur une des pages scannée il y a quelque chose sous la forme <a href="#"><img id="truc" src="#" /></a>, elle ne fonctionne plus. Je voudrais donc procéder de la même façon que pour les fin de chaines.

    J'ai essayé comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    preg_match_all('#<a [^href]*href=("|\')([^"\']*)("|\')[^>]*><img [^src]*src=("|\')[^"\']*("|\')[^>]*></a>#', $contenu, $pages_images);
    Mais évidemment ça ne fonctionne pas. Comme puis-je procéder pour obtenir "tout ce qui n'est pas href" et "tout ce qui n'est pas src" ?

    Merci beaucoup.

  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 : 48
    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
    Bonjour,

    Quelque chose comme ça irait ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
     
    $a = '<a class="link" href="hrefA"><img id="truc" src="srcImg" /></a>';
    $pattern = '/<a.*href=(["|\'].*["|\']).*><img.*src=(["|\'].*["|\']).*\/><\/a>/ui';
    $b = preg_match($pattern, $a, $matches);
     
    ?>

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Salut,

    J'ai essayé avec des .*, mais cela ne semble pas fonctionner parfaitement. C'est pour ça que je voulais savoir s'il existe un moyen de faire "tout ce qui n'est pas src", pour être sur qu'il s’arrête au bon endroit.

  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 : 48
    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
    Citation Envoyé par ebola Voir le message
    Salut,

    J'ai essayé avec des .*, mais cela ne semble pas fonctionner parfaitement. C'est pour ça que je voulais savoir s'il existe un moyen de faire "tout ce qui n'est pas src", pour être sur qu'il s’arrête au bon endroit.
    Ah bon chez moi j'obtiens bien
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $matches[1] = "hrefA";
    $matches[2] = "srcImg";

Discussions similaires

  1. url rewriting complexe
    Par IP-Fix dans le forum Apache
    Réponses: 1
    Dernier message: 07/12/2008, 21h06
  2. Récuparation de l URL de IE
    Par Al_co dans le forum Langage
    Réponses: 4
    Dernier message: 24/04/2008, 08h39
  3. [SimpleXML] Parsage complexe
    Par mirage28 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 26/02/2007, 22h21
  4. [Url Rewriting] Regex complexe
    Par T0xF0x dans le forum Apache
    Réponses: 7
    Dernier message: 27/05/2006, 21h35
  5. Check Url pour savoir si erreur 404 ou si le site existe
    Par Clément[Delphi] dans le forum Composants VCL
    Réponses: 2
    Dernier message: 07/08/2002, 13h49

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