Retrouver tout les liens des images <img> et des liens <a> [ereg] - PHP - Programmation
Marsh Posté le 17-11-2005 à 21:58:06
voir meme : #(?:href|src)='(.+)'#U
Marsh Posté le 17-11-2005 à 22:09:55
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 :
|
si vous voyez d'autres améliorations ou que dans certains cas cela fonctionne pas... dites le moi merci
Marsh Posté le 17-11-2005 à 22:18:20
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]
Marsh Posté le 17-11-2005 à 22:34:31
$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
Marsh Posté le 17-11-2005 à 22:40:29
#\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
Marsh Posté le 17-11-2005 à 22:43:02
merci je vais encore regarder...
Faudrait que j'y mette un coup sur tout...car c'est vraiment pratique...
merci
Marsh Posté le 17-11-2005 à 22:45:43
[hrefHREF] ca matche h ou r ou e ou f ou ... ou E ou F
pas href ou HREF
Marsh Posté le 17-11-2005 à 22:49:23
T'as essayé mon exemple a tout hasard kand meme ou je "parle dans le vide" ?
#\s(?:href|src)=('|" )([^\s]+)\1\s#Ui
Marsh Posté le 18-11-2005 à 10:23:35
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. )
Marsh Posté le 18-11-2005 à 12:25:24
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 !
Marsh Posté le 18-11-2005 à 14:19:48
Ah ben un truc mal formé a pas nécessairement à ramener des résultats cohérents.
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)
Marsh Posté le 17-11-2005 à 21:41:47
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...
merci d'avance