(écrit dans un textarea
[tableau]
Jacques | 5/10/1970 | Paris
Claire | 12/2/1975 | Belfort
Martin | 1/31/1957 | Nice
Marie | 23/12/1948 | Perpignan
[/tableau]
en html.
pour commencer, j'utilise : preg_match_all ("/(\[tableau\])(.*)(\[\/tableau\])/", $Texte, $Tableau_resultats);
souhaitant récupérer tout le texte entre [tableau] et [/tableau]
et ca ne marche pas. Par contre si j'écris sur la même ligne [tableau]Coucou[/tableau], pas de probleme je récupère 'Coucou'. Ou est mon erreur ?
Extrait de mon code pour info :
Function Analyser_tableaux ($Texte)
{
print ("<P> A analyser <br>$Texte</p> \n");
preg_match_all ("/(\[tableau\])(.*)(\[\/tableau\])/", $Texte, $Tableau_resultats);
$Nbre_elements = count($Tableau_resultats[0]);
for( $i = 0 ; $i != $Nbre_elements ; $i++)
{
$A_remplacer = $Tableau_resultats[0][$i];
print ("<P>Chaine detectée : <br>$A_remplacer</p>");
$Retour = Convertir_Tableau($A_remplacer);
$Texte = str_replace ($A_remplacer, $Retour , $Texte);
}
return $Texte;
}
function Convertir_tableau ($Chaine)
{
/*
Exemple d'envoi :
$Chaine = "
Jacques | 5/10/1970 | Paris
Claire | 12/2/1975 | Belfort
Martin | 1/31/1957 | Nice
Marie | 23/12/1948 | Perpignan
";
*/
$Resultat = str_replace ("<br />","</td><tr><td class='tableau'>", $Chaine);
// $Resultat = str_replace ("[tableau]", "", $Resultat);
// $Resultat = str_replace ("[/tableau]", "", $Resultat);
$bBaliseDebut = false;
$bBaliseFin = false;
$SousChaine = "";
for ($i = 0 ; $i <= strlen ($Resultat) ; $i++)
{
if ($Resultat[$i] == "|")
{
$SousChaine = $SousChaine . "</td><td class='tableau'>";
}
else
{
$SousChaine = $SousChaine . $Resultat[$i];
}
}
if ($bBaliseDebut == true and $bBaliseFin == false)
{
return "<P>Erreur de lecture tableau !</p>";
}
else
{
$Resultat = "<table align='center'>";
$Resultat .= "<tr><td class='tableau'>";
$Resultat .= $SousChaine;
$Resultat .= "</td></tr>";
$Resultat .= "</table>";
return $Resultat;
}
}
Merci beaucoup à vous !