j'ai créée à moment donné une function en PHP, dont le but est de remplacer des symboles, dans un fichier source texte, par l'équivalent en élèment XHTML, dans la page web.
voilà la function :
CODE
function code2xhtml($var) { // changer les symboles en xhtml !
if(ereg("^\#", $var) || ereg("^(\`)", $var) || ereg("^(\%)", $var) || ereg("^\*", $var)) {
if(ereg("^\#", $var)) {
if(preg_match("/^(\#{3})/", $var))
$var = preg_replace("/^(\#{3})(.+)(\#{3})$/", "<h3>$2</h3>\n", $var); // h3
elseif(preg_match("/^(\#{2})/", $var)) {
if(ereg("\|", $var))
$var = preg_replace("/^(\#{2})(.+)\|(.+)(\#{2})$/", "<h2 class=\"$2\">$3</h2>\n", $var); // h2
else $var = preg_replace("/^(\#{2})(.+)(\#{2})$/", "<h2>$2</h2>\n", $var); // h2
}
elseif(preg_match("/^(\#)/", $var))
$var = preg_replace("/^(\#)(.+)(\#)$/", "<h1>$2</h1>\n", $var); // h1
}
if(ereg("^(\`)", $var)) {
if(preg_match("/^\`dl/", $var))
$var = preg_replace("/^(\`dl)\|(.+)$/", "<dl class=\"$2\">\n", $var); // <dl>
if(preg_match("/^\`dt/", $var))
$var = preg_replace("/^(\`dt)\|(.+)$/", "<dt>$2</dt>\n", $var); // <dt>
elseif(preg_match("/^\`/", $var)) {
$var = preg_replace("/^(\`)(.+)(\`)$/", "<dd>$2</dd>\n", $var); // <dd>
if($var == "<dd> </dd>\n") $var = "<dd> </dd>\n";
}
if(preg_match("/^\`fdl/", $var))
$var = preg_replace("/^(\`fdl)$/", "</dl>\n", $var); // </dl>
}
if(ereg("^(\%)", $var)) {
if(preg_match("/^(\%{2})/", $var))
$var = preg_replace("/^(\%{2})$/", "</ul>\n", $var); // </ul>
elseif(preg_match("/^(\%)/", $var))
$var = preg_replace("/^(\%)$/", "<ul>\n", $var); // <ul>
}
if(preg_match("/^\*/", $var))
$var = preg_replace("/^(\*)(.+)$/", "<li>$2</li>\n", $var); // li
}
else { // si ne correspond pas aux premières conditions !
if($var == "") $var = "<p> </p>\n"; // <p> vide !
elseif(preg_match("/^\{p/", $var))
$var = preg_replace("/(\{p)\|([^\]]*)\|([^\]]*)(\})/", "<p class=\"$2\">$3</p>\n", $var); // mise en gras
else $var = "<p>$var</p>\n"; // <p>
}
return($var);
}
if(ereg("^\#", $var) || ereg("^(\`)", $var) || ereg("^(\%)", $var) || ereg("^\*", $var)) {
if(ereg("^\#", $var)) {
if(preg_match("/^(\#{3})/", $var))
$var = preg_replace("/^(\#{3})(.+)(\#{3})$/", "<h3>$2</h3>\n", $var); // h3
elseif(preg_match("/^(\#{2})/", $var)) {
if(ereg("\|", $var))
$var = preg_replace("/^(\#{2})(.+)\|(.+)(\#{2})$/", "<h2 class=\"$2\">$3</h2>\n", $var); // h2
else $var = preg_replace("/^(\#{2})(.+)(\#{2})$/", "<h2>$2</h2>\n", $var); // h2
}
elseif(preg_match("/^(\#)/", $var))
$var = preg_replace("/^(\#)(.+)(\#)$/", "<h1>$2</h1>\n", $var); // h1
}
if(ereg("^(\`)", $var)) {
if(preg_match("/^\`dl/", $var))
$var = preg_replace("/^(\`dl)\|(.+)$/", "<dl class=\"$2\">\n", $var); // <dl>
if(preg_match("/^\`dt/", $var))
$var = preg_replace("/^(\`dt)\|(.+)$/", "<dt>$2</dt>\n", $var); // <dt>
elseif(preg_match("/^\`/", $var)) {
$var = preg_replace("/^(\`)(.+)(\`)$/", "<dd>$2</dd>\n", $var); // <dd>
if($var == "<dd> </dd>\n") $var = "<dd> </dd>\n";
}
if(preg_match("/^\`fdl/", $var))
$var = preg_replace("/^(\`fdl)$/", "</dl>\n", $var); // </dl>
}
if(ereg("^(\%)", $var)) {
if(preg_match("/^(\%{2})/", $var))
$var = preg_replace("/^(\%{2})$/", "</ul>\n", $var); // </ul>
elseif(preg_match("/^(\%)/", $var))
$var = preg_replace("/^(\%)$/", "<ul>\n", $var); // <ul>
}
if(preg_match("/^\*/", $var))
$var = preg_replace("/^(\*)(.+)$/", "<li>$2</li>\n", $var); // li
}
else { // si ne correspond pas aux premières conditions !
if($var == "") $var = "<p> </p>\n"; // <p> vide !
elseif(preg_match("/^\{p/", $var))
$var = preg_replace("/(\{p)\|([^\]]*)\|([^\]]*)(\})/", "<p class=\"$2\">$3</p>\n", $var); // mise en gras
else $var = "<p>$var</p>\n"; // <p>
}
return($var);
}
On fait certainement mieux, certes et je ne dirais pas le contraire ; le soucis est que je ne sais pas en quoi ou pourquoi, serait plus juste, la condition else (// si ne correspond pas aux premières conditions !) ne se vérifie jamais...
Résultat, je n'arrive pas à avoir l'implémentation des élèments p !
PS : Suis-je clair ?