Membre
|
Bonjour depuis quelques jour je n'arrive pas à afficher le BBcode en HTML je voudrais qu'il soi traduis puis affiché.
voici les scripts de la page où son affiché les news qui devraient être traduites
index.php
<?php
mysql_connect("", "", "");
mysql_select_db("");
// On récupère les 5 dernières news
$retour = mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT 0, 5');
while ($donnees = mysql_fetch_array($retour))
{
?>
<div class="news">
<h3>
<?php echo $donnees['titre']; ?>
<em>le <?php echo date('d/m/Y à H\hi', $donnees['timestamp']); ?></em>
</h3>
<p>
<?php
include("admin/view.php");
$contenu = parseZCode($contenu);
// On enlève les éventuels antislash PUIS on crée les entrées en HTML (<br />)
$contenu = nl2br(stripslashes($donnees['contenu']));
echo $contenu($parseZCode);
?>
</p>
</div>
<?php
} // Fin de la boucle des news
?>
La page du BBcode
view.php
<?php
function parseZCode($contenu) {
// Parsage des balises
$zcode = array(
'`<italique>(.+)</italique>`isU',
'`<gras>(.+)</gras>`isU',
'`<barre>(.+)</barre>`isU',
'`<lien>(.+)</lien>`isU',
'`<lien url="(.+)">(.+)</lien>`isU',
'`<image>(.+)</image>`isU',
'`<citation>(.+)</citation>`isU',
'`<citation nom="(.+)">(.+)</citation>`isU',
'`<citation lien="(.+)">(.+)</citation>`isU',
'`<taille valeur="(.+)">(.+)</taille>`isU'
);
$html = array(
'<em>$1</em>',
'<strong>$1</strong>',
'<del>$1</del>',
'<a href="$1">$1</a>',
'<a href="$1">$2</a>',
'<img src="$1" alt="Image utilisateur" />',
'<br /><span class="citation">Citation</span><div class="citation2">$1</div>',
'<br /><span class="citation">Citation : $1</span><div class="citation2">$2</div>',
'<br /><span class="citation"><a href="$1">Citation</a></span><div class="citation2">$2</div>',
'<span class="$1">$2</span>'
);
$contenu = htmlspecialchars($contenu);
$contenu = preg_replace($zcode, $html, $contenu);
// parsage des smilies
$smiliesName = array(':sourire:',':malheureu:',':moustache:',':lunette:',':lunette2:',':hum:',':aventure:');
$smiliesUrl = array('sourire.gif', 'malheureu.gif', 'souriremoustache.gif', 'sourirelunette.gif', 'sourirelunette2.gif', 'hum.gif','aventurier.gif');
$smiliesPath = "textarea/";
for ($i = 0, $c = count($smiliesName); $i < $c; $i++) {
$contenu = preg_replace('`' . $smiliesName[$i] . '`isU', '<img src="' . $smiliesPath . $smiliesUrl[$i] . '" alt="smiley" />', $contenu);
}
// Rtours à la ligne
$contenu = preg_replace('`\n`isU', '<br />', $contenu);
return $contenu;
}
if (isset($_POST["string"])) {
$content = $_POST["string"];
if (get_magic_quotes_gpc()) {
$content = stripslashes($content);
}
echo parseZCode($content); // Ecriture du contenu parsé.
}
?>
Les liens sont bon mais le message d'erreur suivant s'affiche et l'include de mon pied de page ne marche pas avec ce code
"Fatal error: Call to undefined function < g r a s>dgdfgdfgdfg </g r a s > () in /home/sites/hebfree.org/bricktown/public_html/index.php on line 69
" (j'ai espacé les lettres de la balise gras sinon votre BBcode fesait effet.
|
Admin
|
Bonjour,
dans ton fichier index.php
modifie:
echo $contenu($parseZCode);
par:
echo parseZCode($contenu);
Cordialement
|
Membre
|
Alors la vraiment un tres tres grand merci car je ne trouvais pas de solution au probleme.
Vraiment merci bravo j'ai posté ma reponse hier et j'ai eu la bonne reponse alors que sur le site du zero je l'avais posté il y a longtemps et il n'ont toujours pas trouvé la solution.
vraiment merci vous fêtes un tres beau boulot.
|
Membre
|
Maintenant j'ai un petit probleme qui se pose, quand je saute ou passe une ligne dans le textarea de postage j'ai les <br /> qui s'affiche sur l'index où son affiché les news. Pourtant j'avais rendu les balises html inofensive.
|
Admin
|
Bonjour,
je ne suis pas sûr de bien comprendre, quand tu dis que les <br /> sont affiché, tu veut dire que les sauts sont pris en compte ou que tu voir d'écrit sur ta page des <br />
donc pour le premier cas ça donne ça:
Quote: Exemple 1 Ligne 1
Ligne 2
Et le deuxième
Quote: Exemple 2 Ligne 1<br />Ligne 2
ou encore
Quote: Exemple 3 Ligne 1<br />
Ligne 2
Je crois que c'est le dernier cas, essaye en modifiant la ligne:
$contenu = nl2br(stripslashes($donnees['contenu']));
par:
$contenu = stripslashes($donnees['contenu']);
si ce n'est pas ça, peut-tu préciser.
Cordialement
|
Membre
|
Merci s'etait la 3eme situation.
Je savais que c'etait de ce côté que sa plantait mais pas avoir une correction.
Merci
|