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.
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. )
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...