Comment prendre un texte entre deux balises svp?

Résolu
cs_Linuss Messages postés 176 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 9 mai 2008 - 29 nov. 2007 à 14:04
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 - 29 nov. 2007 à 17:52
    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

vilhjalms Messages postés 591 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 16 juillet 2009 2
29 nov. 2007 à 14:18
Saell og blesuð

Voir les expregs

Vilhjálms
Sigurðsdóttir aka Frëyjá
3
cs_Linuss Messages postés 176 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 9 mai 2008
29 nov. 2007 à 14:30
merci :)
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
29 nov. 2007 à 17:52
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"
}
}
0
Rejoignez-nous