|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre expérimenté
![]() Inscription : septembre 2005 Messages : 925 ![]() |
salut,
je m'excuse davance de deranger encore du monde a propos de regex, mais, je doit avoir un pb avec cette syntaxe particuliere :'( donc, mon but est le suivant : créer une moulinnette, pour inserer des traductions pre-existantes dans du HTML mis en forme (si c'est pas clair, c po grave, là n'est pas le pb) pour ce faire, je recherche les balises HTMl de mise en forme, afin de capturer leur contenu. j'ai 4 expressions regulieres a utiliser de cette maniere. Code :
je n'ai pas de message d'erreure sur la syntaxe, mais rien n'est capturé. j'ai donc testé la premiere sur ce site et, en javascript, elle marche... pour le texte, il ressemble a ca, pour la premiere : Code :
<p class="titre-rouge">Aime la Plagne, un point de vue imprenable !<img |
||
|
|
00
|
|
|
#2 |
|
Membre expérimenté
![]() Inscription : septembre 2005 Messages : 925 ![]() |
petite precision :
fonctionne avec ereg(). cepedant, je n'arrive pas a la rendre non gourmande, en effet, j'ai toujours travaillé avec preg... |
|
|
00
|
|
|
#3 |
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
Pour rendre une expression régulière non avide (ou gourmande), il faut remplacer .* et .+ respectivement par .*? et .+?. Les fonctions preg_X (toutes ?) disposent également du flag U pour cela.
Julp. |
|
|
00
|
|
|
#4 | |
|
Membre expérimenté
![]() Inscription : septembre 2005 Messages : 925 ![]() |
j'ai essayé avec cette expression :
ca ne marchait pas (pas de correspondance au motif trouvée), quand au : il me retourne l'erreure : Citation:
|
|
|
|
00
|
|
|
#5 |
|
Membre éprouvé
![]() Inscription : mai 2006 Messages : 694 ![]() |
Essaie de terminer ton expression avec $ et je ne vois pas non plus l'utilité des () juste avant <img :
Code :
'/^.*<p class="titre-rouge">(.*)<img/' webrider
__________________
Pensez au tag
|
|
|
00
|
|
|
#6 |
|
Membre expérimenté
![]() Inscription : septembre 2005 Messages : 925 ![]() |
en fait, je ne veut capturer que le contenu de , d'ou ma parenthese, qui en regex POSIX permet de definir plusieures captures...
je bloque le sujet jusqu'a lundi, car j'ai progressé, mais oublié de poster. actuellement, je en suis plus au boulot,e t n'ai plus en tete les dernieres données, dsl) :'( de plus, je jne eput pas terminer mon expression par $ car, img n'est ps la fin de la chaine, il reste encore + de 7000 char avant de l'avoir atteinte. en fait, je resume : je veut caprturer ce quie st en rouge, le filtre minimale du "contexte textuel environnent" est en vert : le jaune me permet de definir une zone de capture restreinte, et, le bleu, si j'arrive a activer l'option non gourmande, me permet d'etre sur de trouver la balise correspondante la plus proche du debut. |
|
|
00
|
|
|
#7 |
![]() ![]() Guillaume RossoliniDirecteur technique Inscription : février 2004 Messages : 13 720 ![]() |
Perso, et j'en suis désolé, je n'ai rien compris à ton objectif donc je vais me contenter de te rappeler qu'il existe ceci : Initiation aux expressions régulières en PHP
[Edit] Ceci ne sert à rien : ^.*< car cela dit à la regex "trouve-moi n'importe quoi depuis le début de la chaîne jusqu'au premier < puis oublie-le" Autant laisser simplement : <
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
|
|
00
|
|
|
#8 | ||||
|
Membre expérimenté
![]() Inscription : septembre 2005 Messages : 925 ![]() |
Citation:
Citation:
je vait donc recapituler : nous refaisons un site multilingue. ce site possedait un tas de page que nous voulons recupérer. un premier travail a ete fait : recupérer toutes les pages en francais, puis, les mettre en forme de facon differente. maintenant, on me demande d'onclure dans cette mise en forme, les textes des autres langues. pour ce faire, je connait la structure generale de la nouvelle mise en forme. a l'aide d'expression regulieres, j'essaie d'isoler les differentes parties, afin de les remplacer par leurs equivalent traduits dans d'autres langues. j'en suis donc a la recherche des textes a remplacer. le premier de ces textes a la mise en forme suivante : Citation:
Citation:
le probleme etant que, avec "preg_match()", elle ne fonctionne aps du tout, et, qu'avec "ereg()", elle est gourmande, et se termien a la derniere balise img trouvée, au lieu de la premiere. j'en suis donc là, et assez perdu :'( |
||||
|
|
00
|
|
|
#9 |
![]() ![]() Guillaume RossoliniDirecteur technique Inscription : février 2004 Messages : 13 720 ![]() |
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
|
|
00
|
|
|
#10 |
|
Membre expérimenté
![]() Inscription : septembre 2005 Messages : 925 ![]() |
pb resolut...
des fois, faut mieux taire son pb... Code :
$result = preg_match($pattern, $this->html[$this->langNew]); Code :
preg_match($pattern, $this->html[$this->langNew], $result);
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com