Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/08/2006, 15h35   #1
Membre expérimenté
 
Avatar de hansaplast
 
Inscription : septembre 2005
Messages : 925
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2005
Messages : 925
Points : 562
Points : 562
Par défaut [regex][preg_match_all]ma regex marche pas

bonjours, je vous montre le string a chercher a l'aide d'une regex :

Citation:
<a href="http://blalba.com/repertoire/toto-est-bete.php5" mce_href="repertoire/toto-est-bete.php5">Booking at your tata<br></a>
le regex que j'ai ecrit au debut etait :

Code :
1
2
3
4
$pattern2 = '<a *href="(.*) *mce_href="(.*) *">.*<\/a>';
if (preg_match_all($pattern2, $match, $tabLiens) ) {
...
}
seulement, ca me note une erreure :
Citation:
Warning: preg_match_all() [function.preg-match-all]: Unknown modifier '.' in /www/skiset/www/backOffice/traduction/pagesstatiques.php5 on line 159
j'ai donc essayé :
Code :
$pattern2 = '/<a *href="(.*) *mce_href="(.*) *">.*<\/a>/s';
j'ai plus l'erreure mais, ce ne em trouve pas le string,
cette solution ne marche pas non plus :

Code :
$pattern2 = '/<a *mce_href="([[:alnum:][:punct:][:graph:]]*)" *href="([[:alnum:][:punct:][:graph:]]*)" *>[[:alnum:]<>,:;]*<\/a>/s';
ca ne marche pas non plus...
__________________
Vous un sur Grenoble? on est fait pour tout du moins si vous mon CV
hansaplast est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2006, 16h19   #2
Rédacteur
 
Avatar de wamania
 
Développeur Web
Inscription : juillet 2003
Messages : 676
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juillet 2003
Messages : 676
Points : 678
Points : 678
Code :
1
2
3
4
5
6
7
8
<?php
$tab = array();
preg_match_all( 
    '/<a\s+href="(.*)"\s+mce_href="(.*)"\s*>.*<\/a>/', 
    '<a href="http://blalba.com/repertoire/toto-est-bete.php5" mce_href="repertoire/toto-est-bete.php5">Booking at your tata<br></a>', 
    $tab);
print_r($tab);
?>
me donne

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Array
(
    [0] => Array
        (
            [0] => <a href="http://blalba.com/repertoire/toto-est-bete.php5" mce_href="repertoire/toto-est-bete.php5">Booking at your tata<br></a>
        )
 
    [1] => Array
        (
            [0] => http://blalba.com/repertoire/toto-est-bete.php5
        )
 
    [2] => Array
        (
            [0] => repertoire/toto-est-bete.php5
        )
 
)
__________________
Articles sur developpez.com
- Gestion des exceptions avec PHP5
- Chiffrement et hash en PHP contre l'attaque Man in the middle
- Aedituus - Espace membre sécurisé en PHP5

Lithium : ORM ActiveRecord PHP5 extrêmement léger
wamania est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2006, 16h35   #3
Membre expérimenté
 
Avatar de hansaplast
 
Inscription : septembre 2005
Messages : 925
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2005
Messages : 925
Points : 562
Points : 562
merci
__________________
Vous un sur Grenoble? on est fait pour tout du moins si vous mon CV
hansaplast est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2006, 11h40   #4
Membre expérimenté
 
Avatar de hansaplast
 
Inscription : septembre 2005
Messages : 925
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2005
Messages : 925
Points : 562
Points : 562
la regex fonctionne... sauf en cas de non retours a la ligne il faudrait la rendre non gourmande, mais, je ne connait pas bien la syntaxe que tu as proposé :
Code :
$pattern = '/<a\s+href="(.*)"\s+mce_href="(.*)"\s*>.*<\/a>/';
je suis en train d'eesayer differentes syntaxes,
Code :
$pattern = '/<a\s+href="(.*)"\s+mce_href="(.*)"\s*>.*<\/a>/U';
a l'ai de bien fonctionner, je poste juste pour etre sur de ne pas me fourvoyer dnas ma solution
__________________
Vous un sur Grenoble? on est fait pour tout du moins si vous mon CV
hansaplast est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2006, 12h02   #5
Rédacteur
 
Avatar de wamania
 
Développeur Web
Inscription : juillet 2003
Messages : 676
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juillet 2003
Messages : 676
Points : 678
Points : 678
Citation:
sauf en cas de non retours a la ligne
Je peux avoir un exemple stp?
__________________
Articles sur developpez.com
- Gestion des exceptions avec PHP5
- Chiffrement et hash en PHP contre l'attaque Man in the middle
- Aedituus - Espace membre sécurisé en PHP5

Lithium : ORM ActiveRecord PHP5 extrêmement léger
wamania est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2006, 12h17   #6
Membre expérimenté
 
Avatar de hansaplast
 
Inscription : septembre 2005
Messages : 925
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2005
Messages : 925
Points : 562
Points : 562
Code :
1
2
3
<li><a href="http:///paiement.html" mce_href="paiement.html">Modes de paiement</a></li>
<li><a href="http:///engagement.html" mce_href="engagement.html">L'engagement XXX</a></li> <li class="actif"><a href="http:///remises-tarifaires.html" mce_href="remises-tarifaires.html">Descriptif des remises</a></li>
<li><a href="http:///cgv.html" mce_href="cgv.html">Les conditions générales de ventes</a> </li>
la partie en rouge etait prise avec son predesceseur en vert.

en gros, pour la premiere parenthese, le contenu capturé etait :
Code :
http:///engagement.html" mce_href="engagement.html">L'engagement XXX</a></li> <li class="actif"><a href="http:///remises-tarifaires.html
et pour la seconde :
Code :
remises-tarifaires.html
l'expression reguliere etait donc gourmande, avec comme limite, le retours a la ligne
__________________
Vous un sur Grenoble? on est fait pour tout du moins si vous mon CV
hansaplast est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2006, 12h33   #7
Rédacteur
 
Avatar de wamania
 
Développeur Web
Inscription : juillet 2003
Messages : 676
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juillet 2003
Messages : 676
Points : 678
Points : 678
le U que tu as mis en correct, sinon, tu peux ajouter des ?

Par exemple
Code :
'/<a\s+href="(.*?)"\s+mce_href="(.*?)"\s*>.*<\/a>/'
devrait fonctionner (pas tester)
Sinon, ta solution est bonne aussi.
__________________
Articles sur developpez.com
- Gestion des exceptions avec PHP5
- Chiffrement et hash en PHP contre l'attaque Man in the middle
- Aedituus - Espace membre sécurisé en PHP5

Lithium : ORM ActiveRecord PHP5 extrêmement léger
wamania est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2006, 14h08   #8
Rédacteur
 
Avatar de wamania
 
Développeur Web
Inscription : juillet 2003
Messages : 676
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juillet 2003
Messages : 676
Points : 678
Points : 678
Un petit lien pour appronfir les regexp pcre
http://g-rossolini.developpez.com/tu...?page=sommaire
__________________
Articles sur developpez.com
- Gestion des exceptions avec PHP5
- Chiffrement et hash en PHP contre l'attaque Man in the middle
- Aedituus - Espace membre sécurisé en PHP5

Lithium : ORM ActiveRecord PHP5 extrêmement léger
wamania est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2006, 14h11   #9
Membre expérimenté
 
Avatar de hansaplast
 
Inscription : septembre 2005
Messages : 925
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2005
Messages : 925
Points : 562
Points : 562
merci de ta reponse

le ? est pour specifier un ungready ponctuel?
__________________
Vous un sur Grenoble? on est fait pour tout du moins si vous mon CV
hansaplast est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2006, 14h20   #10
Rédacteur
 
Avatar de wamania
 
Développeur Web
Inscription : juillet 2003
Messages : 676
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juillet 2003
Messages : 676
Points : 678
Points : 678
oui
(mais ça s'écrit ungreedy, je crois)
__________________
Articles sur developpez.com
- Gestion des exceptions avec PHP5
- Chiffrement et hash en PHP contre l'attaque Man in the middle
- Aedituus - Espace membre sécurisé en PHP5

Lithium : ORM ActiveRecord PHP5 extrêmement léger
wamania est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2006, 15h13   #11
Membre expérimenté
 
Avatar de hansaplast
 
Inscription : septembre 2005
Messages : 925
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2005
Messages : 925
Points : 562
Points : 562
arf :'(

j'ai encore un pb, j'ai la chaine suivante :

Code :
<a href=\"http://XXX.dev.YYY.com/contact/sc-contact.php5\" mce_href=\"contact/sc-contact.php5\">Service client </a>
pour la "retrouver j'utilise le pattern suivant :
Code :
$pattern = '/<a\s+href=\\"(.*)\\"\s+mce_href=\\"(.*)\\"\s*>.*<\/a>/U';
j'echappe les antislash, mais, je ne retrouve aucune occurence...

la seule difference par rapport au pb precendent est constitué par ces maudits antislashs!
__________________
Vous un sur Grenoble? on est fait pour tout du moins si vous mon CV
hansaplast est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2006, 15h35   #12
Membre expérimenté
 
Avatar de hansaplast
 
Inscription : septembre 2005
Messages : 925
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2005
Messages : 925
Points : 562
Points : 562
je pourrait bien faire
Code :
$pattern = '/<a\s+href=(.*)\s+mce_href=(.*)\s*>.*<\/a>/U';
mais j'ai besoin de travailler sur l'url, de faire des str_replace...
et, suivant certains parametre, mon str replace peut etre tres different, je prefere donc travailler sans les guillement echappés afin de ne pas faire de betise...
__________________
Vous un sur Grenoble? on est fait pour tout du moins si vous mon CV
hansaplast est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2006, 16h33   #13
Membre expérimenté
 
Avatar de hansaplast
 
Inscription : septembre 2005
Messages : 925
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2005
Messages : 925
Points : 562
Points : 562
quant a :

Code :
'/<a\s+href=[\]"(.*)[\]"\s+mce_href=[\]"(.*)[\]"\s*>.*<\/a>/U'
il me retourne l'erreure suivante :
Citation:
Warning: preg_match_all() [function.preg-match-all]: Compilation failed: missing terminating ] for character class at offset 57 in /www/skiset/www/backOffice/traduction/pagesstatiques.php5 on line 196
__________________
Vous un sur Grenoble? on est fait pour tout du moins si vous mon CV
hansaplast est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2006, 16h46   #14
Membre expérimenté
 
Avatar de hansaplast
 
Inscription : septembre 2005
Messages : 925
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2005
Messages : 925
Points : 562
Points : 562
pb resolut en faisant maintes str_replace et trim... puis en remettant mes
Citation:
\"
__________________
Vous un sur Grenoble? on est fait pour tout du moins si vous mon CV
hansaplast est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2006, 09h29   #15
Membre expérimenté
 
Avatar de hansaplast
 
Inscription : septembre 2005
Messages : 925
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2005
Messages : 925
Points : 562
Points : 562
je me retrouve avec de nouveaux pbs :

Code :
1
2
3
4
5
6
7
8
9
<a mce_href="\"comment-louer/louer-online.php5\"" href="\"http://XXX.dev.YYY.com/comment-louer/louer-online.php5\""> En ligne </a>
<ul>
<li>
<a mce_href="\"paiement.html\"" href="\"http://XXX.dev.YYY.com/paiement.html\"">Modes de paiement</a>
</li>
<li>
<a mce_href="\"comment-louer/engagement-skiset.php5\"" href="\"http://XXX.dev.YYY.com/comment-louer/engagement-XXX.php5\"">L\'engagement Skiset</a>
</li>
le texte en rouge n'est pas pris par le pattern :'(

il est dans cette structure HTML :
Code :
1
2
3
4
5
6
7
8
9
10
11
<ul id="\"ss-nav\"">
<li>
<a mce_href="\"comment-louer/louer-online.php5\"" href="\"http://XXX.dev.YYY.com/comment-louer/louer-online.php5\""> En ligne </a>
<ul>
<li>
</li>
...
</ul>
</li>
...
</ul>
j'arrive pas a comrpendre pourquoi il n'est pas capturé... :'(

je suis desolé d'etre aussi chiant, mais, j'y arrive vraiement pas...
__________________
Vous un sur Grenoble? on est fait pour tout du moins si vous mon CV
hansaplast est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2006, 14h59   #16
Membre expérimenté
 
Avatar de hansaplast
 
Inscription : septembre 2005
Messages : 925
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2005
Messages : 925
Points : 562
Points : 562
apparement, le "." du motif ne fonctionne pas totalement
=>il a l'air de ne pas capturer les "-"

Code :
$pattern = '/<a\s+href=(.*)\s+mce_href=(.*)\s*>.*<\/a>/U';
j'ai essayé avec :
Code :
$pattern = '/<a\s+href=([.-]*)\s+mce_href=([-.]*)\s*>.*<\/a>/U';
mais la syntaxe n'est pas correcte...

j'ai aussi essayé avec des laternatives :
Code :
$pattern = '/<a\s+href=(#.|-#*)\s+mce_href=(#.|-#*)\s*>.*<\/a>/U';
ca ne fonctionne pas non plus :'(

edit : erreure, le pb ne vient aps des "-", mais, bel et bien de portions de ma chaine qui ne sont pas capturées, alors qu'elles n'ont aucune difference avec le reste...
__________________
Vous un sur Grenoble? on est fait pour tout du moins si vous mon CV
hansaplast est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h52.


 
 
 
 
Partenaires

Hébergement Web