Probleme fonction que j'ai créé
le 12/06/2006 à 23:25
kurt
Bonjour tt le monde,
J'ai un petit code plein de regex qui me cause quelques soucis :
l'erreur affichée :
Fatal error: Cannot redeclare highlight_callback() (previously declared in /var/www/users/e-load/e-load/ecode.php:4) in /var/www/users/e-load/e-load/ecode.php on line 4
le code que j'utilise :
<?
include_once('geshi/geshi.php');
function highlight_callback($match)
{
global $path; // pour y avoir accès
return '<strong>Code : '.$match[1].' <div class="code">' . geshi_highlight($match[2],$match[1],$path,true) . '</div></strong>';
}
function Ecode($texte)
{
$texte = stripslashes($_POST['contenu']); // On enlève les slash qui se seraient ajoutés automatiquement
$texte = htmlentities($texte);
$texte = nl2br($texte); // On crée des<br/> pour conserver les retours à la ligne
// On fait passer notre texte à la moulinette des Regex
// 1- les styles :
$texte = preg_replace('!<gras>(.+)</gras>!isU', '<strong>$1</strong>', $texte);
$texte = preg_replace('!<italique>(.+)</italique>!isU', '<em>$1</em>', $texte);
$texte = preg_replace('!<souligne>(.+)</souligne>!isU', '<span class="souligne">$1</span>', $texte);
$texte = preg_replace('!<barre>(.+)</barre>!isU', '<span class="barre">$1</span>', $texte);
// 2- les titres
$texte = preg_replace('!<titre(1|2|3|4|5|6)>(.+)</titre>!isU', '<h$1>$2</h$1', $texte);
//3- les couleurs
$texte = preg_replace('!<couleur=(rouge|vert|bleu|jaune)>(.+)</couleur>!isU', '<span class="$1">$2</span>', $texte);
//3- les positions
$texte = preg_replace('!<position=(droite|centrer|gauche)>(.+)</position>!isU', '<div class="$1">$2</div>', $texte);
//4- les liens
$texte = preg_replace('!http://[a-z0-9._/-]+!i', '<a href="$0">$0</a>', $texte);
$texte = preg_replace('!email:([a-zA-Z0-9_.-]+@[a-zA-Z0-9_.-_.-]+\.[a-z]{2,4})!i', '<a href="mailto:$1">$1</a>', $texte);
//5- images
$texte = preg_replace('`<image=((https?|ftp)://\S+[a-zA-Z0-9]/?)>`U', '<img src="$1" alt="" />', $texte);
//6- citation
$texte = preg_replace('!<citation>(.+)</citation>!isU', '<strong>Citation :</strong><br/><span class="citation">$1</span>', $texte);
//7- code
$liste='PHP|HTML|C|C\+\+|Javascript|Java|MySQL|Perl|Python|SQL';
$texte = preg_replace_callback('`<code=('.$liste.')>(.+)</code>`iUs', 'highlight_callback', $texte);
return html_entity_decode($texte);
}
?>
Ton script déclare deux fois la fonction highlight_callback (tu as deux "function highlight_callback($match)" dans ton code).
le 13/06/2006 à 11:53
kurt
est-ce que tu peu me dire où précisément parce que moi je ne trouve pas.
Ben je ne suis pas devin, mais c'est ce que dis PHP en tout cas :)
Regarde tous tes include (et les include qui sont dans des include) à la recherche de la deuxième déclaration de la fonction.
La fonction est déclarée dans le fichier /var/www/users/e-load/e-load/ecode.php à la ligne 4 en fait (cf. le message d'erreur).
Arf, c'est bizarre, le message d'erreur dit que la fonction est déjà déclarée dans le fichier ou tu la déclares :S
Vérifies quand meme tous tes include.
le 13/06/2006 à 12:18
kurt
Je n'ai que ce code inclu dans la page qui me dis ces bêtises !
le 13/06/2006 à 13:28
kurt
j'ai essayé de chager la position de mon include sur la page ou j'affiche mon code parsé, l'erreur n'est plus là mais c'est tout ce qui est parsé qui n'apparait plus !
je donne le code de la page ou j'affiche le ode parsé au cas où !
<?php session_start();
include('ecode.php'); ?>
<!DOCTYPE html PUBLIC "–//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1–strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>E-load</title>
<meta http–equiv="Content–Type" content="text/html; charset=iso–8859–1" />
<link rel="stylesheet" media="screen" type="text/css" title="Design de base" href="design.css" />
<link rel="stylesheet" media="screen" type="text/css" title="Ecode" href="ecode.css" />
<link REL="SHORTCUT ICON" href="images/favicon.ico" />
</head>
<body>
<!--l'en tete-->
<div id="en_tete">
</div>
<!--les menus-->
<div id="menu">
<div class="element_menu">
<h3>Le Site</h3>
<ul>
<li><a href="index.php">Acceuil</a></li>
<li><a href="contact.html">Contact</a></li>
<li><a href="livreor.php">Livre d'Or</a></li>
<li><a href="#">Forum</a></li>
<li><a href="chat.php">Chat</a></li>
</ul>
</div>
<div class="element_menu">
<h3>Les rubriques</h3>
<ul>
<li><a href="download.php">Download</a></li>
<li><a href="#">Tutos Officiels</a></li>
<li><a href="#">Tutos Membres</a></li>
</ul>
</div>
<div class="element_menu">
<h3>Communauté</h3>
<ul>
<?php if(!isset($_SESSION['pseudo']))
{
?>
<li><a href="formulaire_connection.php">Se connecter</a></li>
<li><a href="formulaire_inscription.php">S'inscrire</a></li>
<?php
}
else
{
?>
<li><a href="proposer.php">Proposer news</a></li>
<li><a href="deconnection.php">Se déconnecter</a></li>
<?php
}
?>
<li><a href="liste_membres.php">Liste des membres</a></li>
<li><?php include("compteur.php");?></li>
</ul>
</div>
<div class="element_menu">
<h3>Pub</h3>
<script type="text/javascript"><!--
google_ad_client = "pub-2232292404634058";
google_ad_width = 125;
google_ad_height = 125;
google_ad_format = "125x125_as";
google_ad_type = "text_image";
google_ad_channel ="";
google_color_border = "336699";
google_color_bg = "FFFFFF";
google_color_link = "0000FF";
google_color_url = "008000";
google_color_text = "000000";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- eStat v3.3.0 -->
<script type="text/javascript">
<!--
var _UJS=0;
//-->
</script>
<script type="text/javascript" src="http://perso.estat.com/js/464064200182.js"></script>
<script type="text/javascript">
<!--
if(_UJS) _estat('464064200182','PAGE_MARQUEE','GROUPE_PAGES_MARQUEES');
//-->
</script>
<noscript>
<a href="http://persos.estat.com/"><img src="http://perso.estat.com/m/00/464064200182?p=PAGE_MARQUEE&c=GROUPE_PAGES_MARQUEES" border="0" alt="marqueur eStat'Perso"></a>
</noscript>
<!-- /eStat -->
</div>
<div class="element_menu">
<h3>Recherche</h3>
<!-- Search Google -->
<center>
<form method="get" action="http://www.google.fr/custom" target="_top">
<table bgcolor="#f4faff">
<tr><td nowrap="nowrap" valign="top" align="left" height="32">
<input type="text" name="q" size="16" maxlength="255" value=""></input>
</td></tr>
<tr><td valign="top" align="left">
<input type="submit" name="sa" value="Goooooooogle!"></input>
<input type="hidden" name="client" value="pub-2232292404634058"></input>
<input type="hidden" name="forid" value="1"></input>
<input type="hidden" name="ie" value="ISO-8859-1"></input>
<input type="hidden" name="oe" value="ISO-8859-1"></input>
<input type="hidden" name="cof" value="GALT:#549BEE;GL:1;DIV:#549BEE;VLC:549BEE;AH:center;BGC:FFFFFF;LBGC:336699;ALC:549BEE;LC:549BEE;T:000000;GFNT:549BEE;GIMP:549BEE;FORID:1;"></input>
<input type="hidden" name="hl" value="fr"></input>
</td></tr></table>
</form>
</center>
<!-- Search Google -->
</div>
</div>
<!-- le corps -->
<div id="corps">
<h1>Accueil</h1>
Bienvenue sur E-load !
<ul>
<li><strong>Qu'est-ce que ce site ?</strong> : E-load est un site qui a été créé dans le but d'aider les débutants en informatique avec des cours simplifiés a l'extrême, mais aussi pour aider les logiciels gratuits ou libres de droits a trouver leur place dans le monde de l'informatique .</li>
<li><strong>Combien ca coute ?</strong> : Absolument rien! Tout est gratuit ici alors n'hesitez pas a appuyer sur la pub ;-). Ca nous aideras a nous payer un nom de domaine plus un hebergement de qualité!</li>
</ul>
<h1>Les News</h1>
<?php
mysql_connect("*", "*", "*");
mysql_select_db("*");
// On récupère les 5 dernières news
$retour = mysql_query('SELECT * FROM news WHERE valide = "1" ORDER BY id DESC LIMIT 0, 5');
while ($donnees = mysql_fetch_array($retour))
{
?>
<div id="news">
<h3><?php echo $donnees['titre']; ?> </h3>
<span class="infos">Ecrit par <?php echo $donnees['pseudo'] ?> le <?php echo date('d/m/Y \à H\hi', $donnees['timestamp']); ?></span>
<span class="commentaires"><a href="commentaires.php?idnews=<?php echo $donnees['id']; ?>&titrenews=<?php echo stripslashes($donnees['titre']); ?>&page=1">
<?php /*Combien a–t–on de commentaires sur cette news ?*/
$infos_com = mysql_query('SELECT COUNT(*) AS nb_com FROM commentaires WHERE idnews=' . $donnees['id']);
$donnees_com = mysql_fetch_array($infos_com);
$totalDesCommentaires = $donnees_com['nb_com'];
echo $totalDesCommentaires;
?> commentaire(s) </a>
</span><br/>
<p>
<?php
//On enlève les éventuels antislash PUIS on crée les entrées en HTML ()
$contenu = Ecode($donnees['contenu']);
echo $contenu;
?>
</p>
</div>
<?php
} // Fin de la boucle des news
?>
</div>
<!-- pied de page -->
<div id="pied_de_page">
<p>Copyright © e-load‚ tous droits réservés</p>
<p>
<a href="http://jigsaw.w3.org/css-validator/">
<img src="images/valide_css.png"
alt="Valid CSS!">
</a>
</p>
</div>
</body>
</html>
Ben si tu n'as plus d'erreur, c'est que c'est bon :)
(tu devais avoir la fonction qui était deja déclarée dans ecode.php).
Maintenant, si ca n'affiche rien, c'est que ton parseur est foireux, ou bien que tu n'as aucune donnée en base.
le 13/06/2006 à 17:07
kurt
merci LA GLOBULE j'ai résolu tt mes problèmes ,
Enfin je crois ...
Ecrire un message
Votre message vient d'être créé avec succès.
BB-Code
Pour insérer une URL clickable
Pour insérer une adresse E-mail
Pour annoter
Pour écrire du code
Pour faire un lien vers une fonction PHP
Pour écrire du texte préformaté
Pour écrire du texte en gras
Pour écrire du texte en italique
Pour écrire du texte souligné
Pour écrire du texte barré
Pour écrire un titre principal
Pour écrire un titre secondaire
Pour écrire une liste
Smiley
:bond:
:boxe:
:bsmile:
:bump:
:clap:
:coeur:
:cool:
:cry:
:eek:
:evil:
:fleur:
:fou2:
:fou:
:grin:
:grrr:
:hammer:
:hippy:
:hum:
:idee2:
:idee:
:kdo:
:king:
:ko:
:lol:
:love2:
:love:
:mad:
:maitre:
:noel:
:oops:
:raa:
:razz:
:roll:
:sad:
:skull:
:smile:
:timide:
:trink:
:vice:
:vomi:
:wink:
:zzz: