Probleme fonction que j'ai créé

Répondre
kurt
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('!&lt;gras&gt;(.+)&lt;/gras&gt;!isU', '<strong>$1</strong>', $texte);
$texte = preg_replace('!&lt;italique&gt;(.+)&lt;/italique&gt;!isU', '<em>$1</em>', $texte);
$texte = preg_replace('!&lt;souligne&gt;(.+)&lt;/souligne&gt;!isU', '<span class="souligne">$1</span>', $texte);
$texte = preg_replace('!&lt;barre&gt;(.+)&lt;/barre&gt;!isU', '<span class="barre">$1</span>', $texte);
// 2- les titres
$texte = preg_replace('!&lt;titre(1|2|3|4|5|6)&gt;(.+)&lt;/titre&gt;!isU', '<h$1>$2</h$1', $texte);
//3- les couleurs
$texte = preg_replace('!&lt;couleur=(rouge|vert|bleu|jaune)&gt;(.+)&lt;/couleur&gt;!isU', '<span class="$1">$2</span>', $texte);
//3- les positions
$texte = preg_replace('!&lt;position=(droite|centrer|gauche)&gt;(.+)&lt;/position&gt;!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('`&lt;image=((https?|ftp)://\S+[a-zA-Z0-9]/?)&gt;`U', '<img src="$1" alt="" />', $texte);
//6- citation
$texte = preg_replace('!&lt;citation&gt;(.+)&lt;/citation&gt;!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('`&lt;code=('.$liste.')&gt;(.+)&lt;/code&gt;`iUs', 'highlight_callback', $texte);
return html_entity_decode($texte);
}


?>
LA GLOBULE
le 13/06/2006 à 01:01
LA GLOBULE
Ton script déclare deux fois la fonction highlight_callback (tu as deux "function highlight_callback($match)" dans ton code).
kurt
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.
LA GLOBULE
le 13/06/2006 à 12:02
LA GLOBULE
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 GLOBULE
le 13/06/2006 à 12:03
LA GLOBULE
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).
LA GLOBULE
le 13/06/2006 à 12:06
LA GLOBULE
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.
kurt
le 13/06/2006 à 12:18
kurt
Je n'ai que ce code inclu dans la page qui me dis ces bêtises !
kurt
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']; ?>&amp;titrenews=<?php echo stripslashes($donnees['titre']); ?>&amp;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>
LA GLOBULE
le 13/06/2006 à 16:13
LA GLOBULE
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.
kurt
le 13/06/2006 à 17:07
kurt
merci LA GLOBULE j'ai résolu tt mes problèmes ,
Enfin je crois ...
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours