par
katagoto » 30 juin 2008, 14:48
Bonjour à toutes et tous,
J'ai créé une fonction qui analyse un noeud et qui remplace ses balise par du PHP, pour un moteur de template, non Cyrano, me tape pas

, mais je n'arrive pas à a faire en sorte que lorsque la balise ne soit pas dans mon tableau ça affiche le noeud tel quel, voilà ma fonction :
function parsage_normal($noeud, $contenu_a_inserer='')
{
// Tableau des balises ouvrantes
$balise_1 = array('if' => 'if($1){', 'else' => 'else {', 'elseif' => 'elseif($1){',
'boucle' => '**$1**', '#text' => 'echo "', 'normal' => 'echo "$0');
// Tableau des balises fermantes
$balise_2 = array('if' => '}', 'else' => '}', 'elseif' => '}', 'boucle' => '**fin**', '#text' => '":',
'normal' => '";');
// Tableau des attributs
$attributs = array('cond' => 'valeur', 'condition' => 'valeur', 'nom' => 'valeur');
if(in_array($noeud->nodeName, $balise_1)) $nom = $noeud->nodeName; // On récupère le nom du noeud
else $nom="normal";
$nom_b=$noeud->nodeName;
if(!empty($contenu_a_inserer)) // On détermine si on veut spécifier du contenu pré-parsé.
{
$contenu = $contenu_a_inserer; // Si c'est le cas, on met la variable de fonction en contenu
}
else
{
$contenu = $noeud->nodeValue; // Sinon, le contenu du noeud.
}
$premiere_balise = $balise_1[$nom]; // Première balise (ouvrante)
if($noeud->hasAttributes()) // On remplace les attributs
{
$un = $noeud->attributes->getNamedItem($attributs[$nom])->nodeValue; // Récupération de la valeur de l'attribut
$premiere_balise = str_replace("$1", $un, $premiere_balise); // On remplace la valeur $1 par celle de l'attribut
}
$intermediaire = $premiere_balise . $contenu . $balise_2[$nom]; // On assemble le tout
if($nom == 'template')
{
$intermediaire = nl2br($intermediaire); // On saute des lignes au résultat final
}
return $intermediaire; // On renvoie le texte parsé.
}
J'aimerais, par exemple, que pou ce noeud :
Que je puisse retourner ça :
echo "<p class=\"page2\">Un texte qui sert à rien</p>";
Quelqu'un à une idée ? Je sêche complètement :/
Par avance merci

Bonjour à toutes et tous,
J'ai créé une fonction qui analyse un noeud et qui remplace ses balise par du PHP, pour un moteur de template, non Cyrano, me tape pas :lol: , mais je n'arrive pas à a faire en sorte que lorsque la balise ne soit pas dans mon tableau ça affiche le noeud tel quel, voilà ma fonction :
[php]
function parsage_normal($noeud, $contenu_a_inserer='')
{
// Tableau des balises ouvrantes
$balise_1 = array('if' => 'if($1){', 'else' => 'else {', 'elseif' => 'elseif($1){',
'boucle' => '**$1**', '#text' => 'echo "', 'normal' => 'echo "$0');
// Tableau des balises fermantes
$balise_2 = array('if' => '}', 'else' => '}', 'elseif' => '}', 'boucle' => '**fin**', '#text' => '":',
'normal' => '";');
// Tableau des attributs
$attributs = array('cond' => 'valeur', 'condition' => 'valeur', 'nom' => 'valeur');
if(in_array($noeud->nodeName, $balise_1)) $nom = $noeud->nodeName; // On récupère le nom du noeud
else $nom="normal";
$nom_b=$noeud->nodeName;
if(!empty($contenu_a_inserer)) // On détermine si on veut spécifier du contenu pré-parsé.
{
$contenu = $contenu_a_inserer; // Si c'est le cas, on met la variable de fonction en contenu
}
else
{
$contenu = $noeud->nodeValue; // Sinon, le contenu du noeud.
}
$premiere_balise = $balise_1[$nom]; // Première balise (ouvrante)
if($noeud->hasAttributes()) // On remplace les attributs
{
$un = $noeud->attributes->getNamedItem($attributs[$nom])->nodeValue; // Récupération de la valeur de l'attribut
$premiere_balise = str_replace("$1", $un, $premiere_balise); // On remplace la valeur $1 par celle de l'attribut
}
$intermediaire = $premiere_balise . $contenu . $balise_2[$nom]; // On assemble le tout
if($nom == 'template')
{
$intermediaire = nl2br($intermediaire); // On saute des lignes au résultat final
}
return $intermediaire; // On renvoie le texte parsé.
}[/php]
J'aimerais, par exemple, que pou ce noeud :
[code]<p class=\"page2\">Un texte qui sert à rien</p>[/code]
Que je puisse retourner ça :
[php]echo "<p class=\"page2\">Un texte qui sert à rien</p>";[/php]
Quelqu'un à une idée ? Je sêche complètement :/
Par avance merci 8-)