|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Invité régulier
![]() Inscription : août 2006 Messages : 15 ![]() |
Bonjour,
Je souhaiterai extraire les urls des balises : provenant d'une sortie html d'un script php. Les urls que je souhaite identifier sont écrites sans quotes : Ex : href=toto.php?x=1&y=2 J'ai fouillé le forum sans succès donc j'ai avancé un peu par moi-même pour obtenir le résultat suivant : Citation:
Ce regex marche presque sauf qu'il me retourne deux sous-chaînes : - l'url - les caractères ' ' ou '>' suivant les cas Or je souhaiterai qu'il me retourne que l'url ! Merci de votre aide. PS : Pour tester : http://www.quanetic.com/regex.php -Fly06 |
|
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : juin 2003 Messages : 4 893 ![]() |
montre nous un petit exemple de code PHP que tu utilises
__________________
Modérateur PHP |
|
|
00
|
|
|
#3 | |
|
Invité régulier
![]() Inscription : août 2006 Messages : 15 ![]() |
Merci pour ta réponse, mathieu.
En fait mon objectif est de faire de la réécriture d'url en utilisant la fonction preg_replace_callback. En cherchant, je me suis aperçu que la syntaxe suivante : Citation:
Mais à l'usage, la fonction preg_replace_callback remplaçait l'url d'origine par l'url transformée non pas à la place de l'url définie par matches[1] mais à la place du pattern global (' ' ou '>' inclus) !!! En lisant la doc sur preg_replace_callback, je crois comprendre que les composantes du tableaux $matches (d'indices 1, 2, ...) correspondent aux sous-masques du regex... (Vous confirmez ?) Donc si je garde mon regex d'origine, il suffit de modifier la fonction de remplacement appelée dans preg_replace_callback pour qu'elle ajoute $matches[2] à la fin de l'url transformée... et le tour est joué ! Je viens d'avoir l'idée, je n'ai pas encore testé... (merci de me donner votre avis). -Fly06 |
|
|
|
00
|
|
|
#4 | ||||
|
Invité régulier
![]() Inscription : août 2006 Messages : 15 ![]() |
Bon j'ai testé et ça a l'air de marcher
Vous vouliez du code ? En voilà : J'utilise un CMS qui gère le SEF mais j'ai un module tiers qui lui ne le gère pas. Ce module tiers retourne du code html dans une variable $content qui peut contenir une ou plusieurs urls. Ces urls ne sont pas conforme W3C puisque les quotes manquent mais bon les browsers comprennent... J'ai donc ajouté le code qui sert à transformer les urls pour le contenu html du CMS à la fin du module (juste avant le return) : Citation:
Le pb était que ce regex suppose que les urls sont entourées de double quotes ! Il fallait donc le changer. J'ai donc opté pour le regex du premier post : Citation:
Citation:
Citation:
Je pense que c'est ok en dehors du simple fait que ça a l'air de marcher mais bon j'ai découvert les expressions régulières ce matin -Fly06 |
||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com