reg ex j'y comprend rien ! [PHP] - PHP - Programmation
Marsh Posté le 02-09-2007 à 19:14:29
Bonjour, 
je suis loin d'etre un expert, mais: 
 
1)Le fait que ce soit deux fois dans le tableau,c'est parce que l'index 0 corespond au masque complet capturé par la regexp.L'index 1 correspond a la premiere paire de parentheses capturantes (et ainsi de suite,si jamais tu as plusieurs paires de parentheses). 
 
2°Le fait qu'il y ait un bout en trop, c'est parce que le comportement par défaut est 'greedy'. C'est à dire qu'il tente de capturer le plus gros morceau possible (greedy=gourmand en angliche). Pour remédier à ca, il faut spécifier l'option 'ungreedy'. En général,ca se fait en ajoutant la lettre U apres la regexp (exemple: $regexp='#REGEXP#U'; ). 
 
Personellement,je me sert de preg_replace, pas de eregi, mais je pense que ca doit etre pareil. 
 
En esperant que ca t'aide. 
Bonne journée 
Marsh Posté le 03-09-2007 à 10:43:01
pour la partie 1 nikel, 
pour la partie 2  je n'ai pas utilisé preg_replace car c'est pour faire un remplacement dans une chaine de caractères or moi je voudrais  récupérer une chaine de caractères (i pour insenssible à la case) ! d'où l'utilisation de eregi . 
mais cela ne fonctionne pas comme je voudrais !! 
j'ai essayé  
| Code : 
 | 
 
mais là jai la même chose qu'avant, plus de chose qu'il m'en faut ! 
 
le problème c'est que le pattern prend toujours le </div> le plus éloigné, il ne prend pas en compte la syntaxe html,  
mais comment faire pour lui dire de limiter sa recherche au </div> le plus proche ? 
 
mon but est de faire un script qui permet de récupérer des articles à partir d'un flux RSS, et des les intégrer en base de données. 
pour le flux RSS => OK, 
vérification de présence de l'article en base de données => OK, 
pour récupérer la page qui contient l'article => OK, 
pour nettoyer la page, et ne ressortir que l'article => technique de la pierre => Echec  
 
pour mettre en base de données l'article => OK,
Marsh Posté le 03-09-2007 à 10:50:15
Forcément si t'ajoutes à la fois le "?" après ".*" et l'option U, ben ça s'annule. ![[:petrus75] [:petrus75]](https://forum-images.hardware.fr/images/perso/petrus75.gif) 
  
 
Choisis entre les deux.
Marsh Posté le 03-09-2007 à 11:06:34
effectivement, en mettant ça : 
| Code : 
 | 
 
il me retroune ça : 
| Code : 
 | 
 
qui est presque ce que je veux j'ai plus qu'à rajouter </div> pour finir comme il faut et c'est parfait ! 
 
n'y aurait-il pas un meilleur pattern pour faire une recherche sur ce type de chaine <div class="post" id="post-1118"> sachant que le "1118" est la seule chose qui peut changer soit en incrément, soit en décrément !
Marsh Posté le 03-09-2007 à 11:10:24
Effectivement tu devrais pouvoir utiliser quelque chose comme ça je suppose. 
 
(Mais c'est plus drôle, les regexp. ![[:dawa] [:dawa]](https://forum-images.hardware.fr/images/perso/dawa.gif) )
)
Marsh Posté le 03-09-2007 à 11:21:36
lol, je parlais d'optimisation de ma regexp 
Marsh Posté le 03-09-2007 à 12:20:32
Disons que si c'est spéciquement pour du (x)html (ou du DOM en général) t'as des outils fait pour donc c'est con de se prendre le chou. 
 
À mon avis là en termes de regexp va te falloir un truc récursif, bref quelque chose d'assez violent. -_-
Marsh Posté le 03-09-2007 à 15:24:44
récursif pas la peine une page == un article 
juste améliorer la regexp au cas où il y aurait besoin, simplification ou autre 
pour le reste de mon truc, pas de soucis, je me débrouille 
Marsh Posté le 02-09-2007 à 12:14:30
Bonjour,
je voudrais récupérer dans une page tous ce qu'il y a entre 2 balises (rien de bien dur, pour ceux qui connaissent) mais voila, il m'en retourne plus et là je ne comprend pas !!
Voici mon code :
voici ce que récupérer ce code :
voici ceux qui est en trop :
et je ne comprend pas pourquoi ?
je ne comprend pas non plus le fait qu'il y ai 2 entrées dans le tableau de retour alors que le code n'y est qu'une fois !
Voila, si vous pouvez m'aider,ça serait super sympas
SteF
---------------
Tout à commencé par un rêve...