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

  FORUM HardWare.fr
  Programmation
  PHP

  [ereg] Retrouver tout les liens des images <img> et des liens <a>

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ereg] Retrouver tout les liens des images <img> et des liens <a>

n°1247964
simoes
Posté le 17-11-2005 à 21:41:47  profilanswer
 

hello,
 
voici mon problème, j'ai une chaîne avec à l'intérieur du code html.
 
Je voudrais pouvoir récupérer dans cette chaîne lles champs "mavaleur" de tout les liens <img src="mavaleur" height="" ...> et <a href='mavaleur' class=''...>
 
Une solution est à mon avis avec les expressions régulières et la fonction "preg_match_all", mais impossible de faire ce que je veux avec...
 
Si quelqu'un métrise merci...
 
 

Code :
  1. $texte = "<HTML>";
  2. $texte .= "<HEAD>";
  3. $texte .= "<TITLE> New Document </TITLE>";
  4. $texte .= "<META NAME='Generator' CONTENT='EditPlus'>";
  5. $texte .= "<META NAME='Author' CONTENT=''>";
  6. $texte .= "<META NAME='Keywords' CONTENT=''>";
  7. $texte .= "<META NAME='Description' CONTENT=''>";
  8. $texte .= "</HEAD>";
  9. $texte .= "<BODY>";
  10. $texte .= "test";
  11. $texte .= "<a href='http://www.site.com' target=''>test</a>";
  12. $texte .= "<a href='http://www.site.com' target=''>test</a>";
  13. $texte .= "<a href='?idnav=23' target=''>test</a>";
  14. $texte .= "</BODY>";
  15. $texte .= "</HTML>";
  16. preg_match_all("|<[^a>]+>(.*)</[^>]+>|U",$texte, $out);
  17. echo $out[0][0] . ',' . $out[0][1] . "\n";
  18. echo $out[1][0] . ',' . $out[1][1] . "\n";


 
 
merci d'avance
 

mood
Publicité
Posté le 17-11-2005 à 21:41:47  profilanswer
 

n°1247970
afbilou
pouet your life
Posté le 17-11-2005 à 21:53:29  profilanswer
 

#<a href='(.+)'.*>#U pour le pattern :/

n°1247971
afbilou
pouet your life
Posté le 17-11-2005 à 21:58:06  profilanswer
 

voir meme : #(?:href|src)='(.+)'#U


Message édité par afbilou le 17-11-2005 à 21:59:15
n°1247975
simoes
Posté le 17-11-2005 à 22:09:55  profilanswer
 

merci..
 
j'ai fait cela ca devrait marcher dans tous les cas pas le href directement apès le <a class='' href=''..> et les balise <a href=\"test.php\">
 

Code :
  1. preg_match_all("#<a.+href=['\"](.+)'.*>#U",$texte, $out);
  2. echo $out[1][0]."<br>";
  3. echo $out[1][1]."<br>";
  4. echo $out[1][2]."<br>";
  5. preg_match_all("#<img.+src=['\"](.+)['\"].*>#U",$texte, $out);
  6. echo $out[1][0]."<br>";
  7. echo $out[1][1]."<br>";


 
si vous voyez d'autres améliorations ou que dans certains cas cela fonctionne pas... dites le moi merci

n°1247981
afbilou
pouet your life
Posté le 17-11-2005 à 22:18:20  profilanswer
 

Si tu veux distingué '...' de "..." il faut mieux faire comme ca :
#\s(?:href|src)=('|" )([^ ]+)\1\s#U
le \1 represente une reference arriere : ici c'est le ' ou le " deja repere apres le href ou le src.
 
[edit : legere modif du masque]


Message édité par afbilou le 17-11-2005 à 22:26:58
n°1247994
simoes
Posté le 17-11-2005 à 22:34:31  profilanswer
 

$texte .= "<a href='http://www.site.com' target=''>test</a>";
$texte .= "<a class='dsf' HREF='http://www.site.com' target=''>test</a>";
 
preg_match_all("#<[aA].+[hrefHREF]=['\"](.+)'.*>#U",$texte, $out);
 
dans le premier cas ca marche masi dans le 2ème il me met dsf

n°1247999
afbilou
pouet your life
Posté le 17-11-2005 à 22:40:29  profilanswer
 

#\s(?:href|src)=('|" )([^ ]+)\1\s#Ui
 
Faudrait voir a te documenter pour ce genre de probleme de casse :/
Le OU en PCRE c pas [...] c'est |
[hrefHREF] NON
(href|HREF) OUI MAIS
href avec l'option i (sans casse) TOUT BON


Message édité par afbilou le 17-11-2005 à 22:42:38
n°1248002
simoes
Posté le 17-11-2005 à 22:43:02  profilanswer
 

merci je vais encore regarder...
 
Faudrait que j'y mette un coup sur tout...car c'est vraiment pratique...
 
merci  

n°1248004
afbilou
pouet your life
Posté le 17-11-2005 à 22:45:43  profilanswer
 

[hrefHREF] ca matche h ou r ou e ou f ou ... ou E ou F
pas href ou HREF

n°1248009
afbilou
pouet your life
Posté le 17-11-2005 à 22:49:23  profilanswer
 

T'as essayé mon exemple a tout hasard kand meme ou je "parle dans le vide" ? :D
#\s(?:href|src)=('|" )([^\s]+)\1\s#Ui

mood
Publicité
Posté le 17-11-2005 à 22:49:23  profilanswer
 

n°1248157
sielfried
Posté le 18-11-2005 à 10:23:35  profilanswer
 

Euh, pourquoi ([^\s]+) ? T'attends un espace avant le ' ou le " fermant le href ?
 
Je dirais #(?:<a\s.*href|<img\s.*src)=(\'|" )([^(?:\1)]+)\1#Ui
 
(Ca devient joli. :o)


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1248281
afbilou
pouet your life
Posté le 18-11-2005 à 12:25:24  profilanswer
 

Non il faut mieux mettre un \s parce ke dans le cas ou l'attribut href est mal formé :
href='sgdfgsd" class='pouet'
l'expression reguliere matcherait href='sgdfgsd" class='
Donc ma solution est mieux !

n°1248286
afbilou
pouet your life
Posté le 18-11-2005 à 12:32:43  profilanswer
 

#\s(?:href|src)=('|" )([^\s]+)\1(?:\s|> )#Ui

n°1248385
sielfried
Posté le 18-11-2005 à 14:19:48  profilanswer
 

Ah ben un truc mal formé a pas nécessairement à ramener des résultats cohérents. :spamafote:
 
Pasqu'après si t'as un truc genre :
<a href="foo'>"blabla"</a>
 
Faut l'interpréter comment ? C'est qu'un exemple.
 
Si on se met à gérer les cas où la syntaxe est mauvaise, on s'en sort plus. :/
 
(y'a un espace en trop avant ta dernière parenthèse fermante, sinon)


Message édité par sielfried le 18-11-2005 à 14:25:32

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar

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

  [ereg] Retrouver tout les liens des images <img> et des liens <a>

 

Sujets relatifs
Socket et envoi d'images ???Résolution images
[VBA Excel] Concaténation pour retrouver un contrôle[php] Création de liens automatique
Liens vers problèmes d'algoproblem de liens sous flash
Macro excel: reduction taille des imagespb avec les images en php dans une page !
galerie d'images en css et centrage...Cacher des liens ...
Plus de sujets relatifs à : [ereg] Retrouver tout les liens des images <img> et des liens <a>


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