Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1606 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Regex Tag <img />

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Regex Tag <img />

n°2153710
dwogsi
Défaillance cérébrale...
Posté le 20-08-2012 à 19:27:56  profilanswer
 

Bonsoir,
 
Mon problème concerne une expression regulière dont l'objectif est de matcher tout les tag <img /> d'une source texte. J'utilise le code suivant qui fonctionnait très bien :
 

Code :
  1. preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/Ui', $source, $matches);


 
Sauf que je viens de tomber sur l'immonde cas ou on a le code html suivant :
 

Code :
  1. <img src="http://www.example.org/lalal/une belle apostrophe '/image.jpg" alt="lalla" />


 
Notez le single quote dans le src du tag... de sorte que mon expression régulière ne catch pas tout le contenu du src. Là j'avoue que mes connaissances en expression régulières sont trop limités pour me sortir de ce problème. Je viens donc demander votre aide.
 
J'ai fais des recherche, mais rien de très concluant. Merci pour votre aide :jap:


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
mood
Publicité
Posté le 20-08-2012 à 19:27:56  profilanswer
 

n°2153836
dwogsi
Défaillance cérébrale...
Posté le 22-08-2012 à 09:02:21  profilanswer
 

UP  :bounce:


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°2153840
KLeMiX
Laisse pas trainer ton site
Posté le 22-08-2012 à 09:27:36  profilanswer
 

Tu peux donner un exemple de valeur pour $source et $matches
 
J'ai pas compris le pb :o


---------------
www.pronovolley.fr Faites vos prono sur la ligue de Volley et défiez vos amis. Des cadeaux en fin d'année  www.levoll.fr
n°2153841
dwogsi
Défaillance cérébrale...
Posté le 22-08-2012 à 09:32:23  profilanswer
 

Oui je n'ai peut être pas assez détaillé... Je veux matcher tout les src de tag <img />. Ces src peuvent être soit entre simple quote ', soit entre double quote ".
 
Ça me pose un problème si j'ai un src entouré de " et contenant un '.
 
Il faudrait pouvoir spécifier que la fin de la chaîne à matcher doit être marquée par le même caractère qu'au début, un ' ou un " mais pas les deux.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°2153844
Riokmij
Blink and you're dead
Posté le 22-08-2012 à 10:03:00  profilanswer
 

Mon conseil : laisse tomber les regexps. Pour du contenu complexe comme du html, c'est pratiquement impossible de traiter tous les cas possibles (sans compter les cas interdits en théorie, mais qu'on peut rencontrer en pratique)
 
Utilise plutôt un parser html.

n°2153845
dwogsi
Défaillance cérébrale...
Posté le 22-08-2012 à 10:18:02  profilanswer
 

As-tu des outils en tête ? Parce que SimpleXML ou Dom n'aiment pas trop les document html mal formés. C'était d'ailleurs pour ça que je m'étais tourné vers une regex. Surtout que dans les quelques milliers de doc html que je dois traiter, le problème que je donne est le seul que je rencontre.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°2153866
KLeMiX
Laisse pas trainer ton site
Posté le 22-08-2012 à 11:12:48  profilanswer
 

dwogsi a écrit :

Oui je n'ai peut être pas assez détaillé... Je veux matcher tout les src de tag <img />. Ces src peuvent être soit entre simple quote ', soit entre double quote ".
 
Ça me pose un problème si j'ai un src entouré de " et contenant un '.
 
Il faudrait pouvoir spécifier que la fin de la chaîne à matcher doit être marquée par le même caractère qu'au début, un ' ou un " mais pas les deux.


 
 
tu peux pas simplement le faire en 2 étapes ? un si le fisrt caractère est " et un autre si le first est ' comme cela tu connais le caractère de fin ?
Pas forcement très jojo mais tu maîtrises plus le process


---------------
www.pronovolley.fr Faites vos prono sur la ligue de Volley et défiez vos amis. Des cadeaux en fin d'année  www.levoll.fr
n°2153868
Riokmij
Blink and you're dead
Posté le 22-08-2012 à 11:15:44  profilanswer
 

Recherche Google "php html parser", premier résultat : http://simplehtmldom.sourceforge.net/
 

Citation :

A HTML DOM parser written in PHP5+ let you manipulate HTML in a very easy way!
Require PHP 5+.
Supports invalid HTML.
Find tags on an HTML page with selectors just like jQuery.
Extract contents from HTML in a single line.


 
Je ne connais pas du tout, mais ça me semble être exactement ce dont tu as besoin (d'ailleurs, l'exemple donné va justement extraire les src de tous les tags img)

n°2153870
dwogsi
Défaillance cérébrale...
Posté le 22-08-2012 à 11:41:20  profilanswer
 

KLeMiX a écrit :


tu peux pas simplement le faire en 2 étapes ? un si le fisrt caractère est " et un autre si le first est ' comme cela tu connais le caractère de fin ?
Pas forcement très jojo mais tu maîtrises plus le process


 
Oui en effet en deux étapes ça doit passer. Je vais tester ça, ça ne me plait pas particulièrement mais ça m'économisera du temps :)
 

Riokmij a écrit :

Recherche Google "php html parser", premier résultat : http://simplehtmldom.sourceforge.net/
 

Citation :

A HTML DOM parser written in PHP5+ let you manipulate HTML in a very easy way!
Require PHP 5+.
Supports invalid HTML.
Find tags on an HTML page with selectors just like jQuery.
Extract contents from HTML in a single line.


 
Je ne connais pas du tout, mais ça me semble être exactement ce dont tu as besoin (d'ailleurs, l'exemple donné va justement extraire les src de tous les tags img)


 
Ma question était plutôt de savoir si tu en avais testé, sinon je me débrouille pas trop mal avec Google :) Mais merci quand même.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°2153872
Riokmij
Blink and you're dead
Posté le 22-08-2012 à 11:52:23  profilanswer
 

dwogsi a écrit :


 
Oui en effet en deux étapes ça doit passer. Je vais tester ça, ça ne me plait pas particulièrement mais ça m'économisera du temps :)
 


 
Jusqu'au jour où tu tomberas sur du html avec un retour à la ligne avant l'attribut src, ou un src non-quoté, ou je ne sais pas trop quoi encore. Et à chaque fois, il faudra revenir bricoler l'expression régulière.
 

dwogsi a écrit :


 
Ma question était plutôt de savoir si tu en avais testé, sinon je me débrouille pas trop mal avec Google :) Mais merci quand même.


 
Je fais pas du tout de PHP :o


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Regex Tag <img />

 

Sujets relatifs
[RegEx] Supprimer les espaces avant et après comme un trimprobleme regex java
Regex en LUA ???[resolu] Nettoyer du code html pour enlever certaines balise inutiles
[PHP] RegEx[résolu] regex : extraire entre une paire d'accolades matchées
Regex et prise de tête ![Resolu] Regex : Variable et incrementation dans le replace
[regex] url rewriting en russe...Pb d'url rewrite + regex
Plus de sujets relatifs à : Regex Tag <img />


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR