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 16/02/2006, 17h07   #1
Membre régulier
 
Inscription : avril 2003
Messages : 323
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 323
Points : 79
Points : 79
Par défaut Regex tout simple

Bonjour,

Je souhaite capturer tout ce qui se trouve entre <td> et </td>

<?php
$str='<table><tr><td>A</td><td>B</td></tr></table>';
ereg('<td>(.*)</td>', $str, $tab);
?>

Mon problème se situe au niveau du .* car voici le résultat
Array ( [0] => ABC [1] => ABC )

Comment indiquer au regex de s'arréter à chaque </td> rencontré ?

Merci.
dorian53 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2006, 11h09   #2
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Essaie avec :
Code :
preg_match_all('/<td>(.*)</td>/U', $str, $tab);
Ou :
Code :
preg_match_all('/<td>(.*)</td>/U', $str, $tab, PREG_SET_ORDER);
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2006, 15h38   #3
Membre régulier
 
Inscription : avril 2003
Messages : 323
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 323
Points : 79
Points : 79
Merci Kirkis,

U était l'option qui me manquait.

Celle-ci convient parfaitement avec le \ à ne pas oublier :
Code :
preg_match_all('/<td>(.*)<\/td>/U', $str, $tab);
dorian53 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2006, 16h44   #4
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Ah, oui, en effet... Désolé.
J'aurais dû t'indiquer un délimiteur différent :
Code :
preg_match_all('#<td>(.*)</td>#U', $str, $tab);
De cette manière, il n'est pas utile d'échapper le slash et ça simplifie la lecture.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h58.


 
 
 
 
Partenaires

Hébergement Web