Aller au contenu

REGEXP et EREGI


adn

Sujets conseillés

Bonjour,

Je bloque sur un problème.

J'ai un fichier dans lequel j'ai plusieurs occurrences de :

<div class="boite">blabla</div> 
avec du code html a l'intérieur de blabla, du genre <br>

A l'extraction avec EREGI:

eregi("<div class=\"boite\">(.*)</div>", $fich, $regs);

il me prend me prend donc bien à partir de la première occurrence de <div class=\"boite\"> mais pour le </div> il me prend la dernière occurrence. On dirait que l'algo prend le champ le plus large possible. Comment l'obliger à lire de gauche à droite et a s'arreter à la première occurence de <div> qu'il rencontre apres le <div class=\"boite\"> et non la derniere du fichier ? Ou alors comment lui dire que je ne veux pas de </div> dans le résultat ?

Ya un pro dans la salle de REGEXP ;)

Modifié par adn
Lien vers le commentaire
Partager sur d’autres sites

Bonsoir...

N'aurais-tu pas la mémoire qui flanche par cette chaleur ? ;)

On en avait déjà discuté, et le message en question est épinglé dans la même section que ce message.

Utilise les fonctions PCRE, elles sont plus puissantes et plus performantes, à ma connaissance POSIX ne permet pas cette distinction.

Bonne continuation.

Lien vers le commentaire
Partager sur d’autres sites

Salut TheRec,

Eh béh, çà remonte çà ... Oui je m'en rappelle mais je ne pensais pas que la solution était dans le problème précédent. A l'époque, mon problème était le passage à la ligne dans le blabla.

Re merci donc, je viens de passer sur preg_match_all et c'est nickel. Par contre, à compter de demain, je vais me renseigner sur POSIX, PCRE et je ne sais pas quoi encore car pour dire vrai je ne comprends pas les différences et leurs interêts....

A dans 2 ans :whistling:

Modifié par adn
Lien vers le commentaire
Partager sur d’autres sites

Bonjour, ça remonte un peu effectivement ;) Les différences entre les deux sont les suivantes (liste non exhaustive) :

PCRE est plus complet (plus de possibilité) et performant, c'est la librairie que Perl (langage de traitement de chaînes de caractères par excellence) utilise.

POSIX est plus simple (syntaxe simplifiée, pas de délimiteur, pas besoin d'utiliser de meta-caractères dans certains cas, ...) et plus lisible grâce à cela.

Je ne vais pas détailler chaque limite de l'un et de l'autre... personnellement je n'utilise que le moteur PCRE, car une fois la syntaxe apprise il offre beaucoup plus de possibilités. Pour le traitement de petites quantités de données et sans avoir besoin de toutes les fonctionnalités de PCRE on pourrait imaginer utiliser POSIX, mais en même temps à par devoir apprendre une autre syntaxe (elle sont tout de même assez similaires) je ne vois pas ce que cela apporte ;)

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...