Comment prendre un texte entre deux balises svp?

Résolu
Signaler
Messages postés
176
Date d'inscription
mardi 7 octobre 2003
Statut
Membre
Dernière intervention
9 mai 2008
-
Messages postés
2480
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
-
    Bonjour à tous,

J'aurais voulu savoir comment faire pour prendre un texte en php qui est par exemple entre deux balises svp?
ex : <td>Texte ici</td>
      <td>Seconde txt</td>
      ...
puis je me retrouve avec un tableau du genre tab[1] = "Texte ici", tab[2] = "Second txt" etc.
Merci :)

3 réponses

Messages postés
591
Date d'inscription
mercredi 20 juillet 2005
Statut
Membre
Dernière intervention
16 juillet 2009
2
Saell og blesuð

Voir les expregs

Vilhjálms
Sigurðsdóttir aka Frëyjá
Messages postés
176
Date d'inscription
mardi 7 octobre 2003
Statut
Membre
Dernière intervention
9 mai 2008

merci :)
Messages postés
2480
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
19
Salut,

preg_match_all('`<td>(.*)</td>`sU', $chaine, $resultats);

$chaine est la chaine dans laquelle faire la recherche. Par exemple :
$chaine = file_get_contents('fichier.txt');

Cela crée un tableau $resultats qui contient
$resultats[0] : un tableau avec les correspondances de la chaine (y compris les balises)
$resultats[1] : un tableau avec les correspondances du masque de capture (ce qui est dans la parenthèse, donc sans les balises)

Explications de l'expression régulière :
` : délimiteur de l'expression

(.*) capture de tous les caractères, quel que soit leur nombre.
On capture donc tout ce qui se trouve entre <td> et </td>

Options de recherche :
s : L'expression régulière ne cherche pas que sur une seule ligne, mais éventuellement sur plusieurs.

U : la parenthèse capturante n'est pas gourmande. Par défaut, une parenthèse capturante est gourmande, c'est à dire qu'elle capture tout ce qui se trouve entre <td> et </td>, même s'il y a d'autres </td> au milieu. Sans ce U, la parenthèse capture tout ce qui se trouve entre le premier <td> et le dernier </td> Avec l'option U, elle recherche ce qui se trouve entre le premier <td> et le prochain </td>

Pour reprendre ton exemple, la ligne de code que je t'ai donnée donnera le résultat suivant :

array(2) {
[0]=>
array(2) {
[0]=>
string(18) "Texte ici"
[1]=>
string(20) "Seconde txt"
}
[1]=>
array(2) {
[0]=>
string(9) "Texte ici"
[1]=>
string(11) "Seconde txt"
}
}