[PHP] str_replace

BINEJE -  
 BINEJE -
Bonjour,
J'ai un probleme avec mon code PHP str_replace.

D'abord voila mon code php.

index.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>Binet JM</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<link href="style.css" rel="stylesheet" type="text/css" /> 
    </head>
        
    <body>
        <h1>Journal de Bord - Binet Jean-Marie</h1>
        <p>Liste des Billets :</p>
        <a href='http://journal-de-bord.legtux.org/'>Accueil</a>

 
<?php
// Connexion à la base de données
try
{
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=****;dbname=****', '****', '****', $pdo_options);
	
    // On récupère les 5 derniers billets
    $req = $bdd->query('SELECT id, titre, contenu, DATE_FORMAT(date_creation, \'%d/%m/%Y à %Hh%imin%ss\') AS date_creation_fr FROM **** ORDER BY date_creation');
    
    while ($donnees = $req->fetch())
    {
    ?>
    <div class="news">
        <h3>
            <?php echo htmlspecialchars($donnees['titre']); ?>
            <em>le <?php echo $donnees['date_creation_fr']; ?></em>
        </h3>
        
        <p>
        <?php
        // On affiche le contenu du billet
        include("smileys.php");
        echo nl2br(htmlspecialchars($donnees['contenu']));
        ?>
        <br />
        <em><a href="commentaires.php?billet=<?php echo $donnees['id']; ?>">Commentaires</a></em>
        </p>
    </div>
    <?php
    } // Fin de la boucle des billets
    $req->closeCursor();
    
}
catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}
?>

</body>
</html>


smileys.php
<?php
$donnees = str_replace('merci' , '<img src="merci.gif" alt="" class="" />', $donnees) ;
$donnees = str_replace('pleur' , '<img src="pleur.gif" alt="" class="" />', $donnees) ;
$donnees = str_replace('idee' , '<img src="idee.gif" alt="" class="" />', $donnees) ;
$donnees = str_replace('lol' , '<img src="lol.gif" alt="" class="" />', $donnees) ;
$donnees = str_replace('zzz' , '<img src="zzz.gif" alt="" class="" />', $donnees) ;
$donnees = str_replace('<3' , '<img src="<3.gif" alt="" class="" />', $donnees) ;
$donnees = str_replace(':P' , '<img src=":P.gif" alt="" class="" />', $donnees) ;
$donnees = str_replace(':O' , '<img src=":O.gif" alt="" class="" />', $donnees) ;
$donnees = str_replace(':S' , '<img src="<3.gif" alt="" class="" />', $donnees) ;
$donnees = str_replace(':)' , '<img src="<3.gif" alt="" class="" />', $donnees) ;
$donnees = str_replace(':D' , '<img src=":D.gif" alt="" class="" />', $donnees) ;
echo $donnees
?>


Maintenant, le probleme:
J'ai crée mes smileys et mes deux pages web mais quand j'ouve la page, il m'affiche
le résultat sans l'avoir modifié.

Auriez-Vous une idée???

4 réponses

  1. boly38 Messages postés 267 Date d'inscription   Statut Membre Dernière intervention   80
     
    Je pense que c'est le "htmlspecialchars" qui peut être de trop : soit le déporter dans la chaîne avant remplacement, soit l'enlever tout simplement.

    Aussi dans smileys.php je ferai plutôt une fonction avec un argument entrée retournant en sortie la chaîne modifiée plutôt que de passer par une variable globale :
    function updateContentUsingSmileys($donnees) {
     // les str_replace ici
     return $donnees;
    }
    


    et dans le fichier principal :
    echo nl2br(updateContentUsingSmileys($donnees['contenu']));
    
    0
  2. BINEJE
     
    Bonsoir,
    Merci pour ton aide.

    J'ai fais comme tu m'a dit.

    index.php
    <?php
            // On affiche le contenu du billet
    	include("smileys.php")
            echo nl2br(updateContentUsingSmileys($donnees['contenu']));
    
            ?>
            <br />
            <em><a href="commentaires.php?billet=<?php echo $donnees['id']; ?>">Commentaires</a></em>
            </p>
        </div>
    


    smiley.php
    <?php
    function updateContentUsingSmileys($donnees['contenu']) {
    
    str_replace('merci' , '<img src="merci.gif" alt="" class="" />', $donnees['contenu']) ;
    str_replace('pleur' , '<img src="pleur.gif" alt="" class="" />', $donnees['contenu']) ;
    str_replace('idee' , '<img src="idee.gif" alt="" class="" />', $donnees['contenu']) ;
    str_replace('lol' , '<img src="lol.gif" alt="" class="" />', $donnees['contenu']) ;
    str_replace('zzz' , '<img src="zzz.gif" alt="" class="" />', $donnees['contenu']) ;
    str_replace('<3' , '<img src="<3.gif" alt="" class="" />', $donnees['contenu']) ;
    str_replace(':P' , '<img src=":P.gif" alt="" class="" />', $donnees['contenu']) ;
    str_replace(':O' , '<img src=":O.gif" alt="" class="" />', $donnees['contenu']) ;
    str_replace(':S' , '<img src="<3.gif" alt="" class="" />', $donnees['contenu']) ;
    str_replace(':)' , '<img src="<3.gif" alt="" class="" />', $donnees['contenu']) ;
    str_replace(':D' , '<img src=":D.gif" alt="" class="" />', $donnees['contenu']) ;
    
     return $donnees['contenu'];
    }
    ?>
    


    Mais il me donne ceci

    Parse error: syntax error, unexpected T_ECHO in /var/www/legtux.org/users/Journal-de-Bord/jmb/index.php on line 38
    0
  3. BINEJE
     
    Voila. J'ai reussi a modifier mon code pour que cela affiche les iamges.

    Mais le probleme, c'est qu'il n'affiche pas l'image. il affiche le code.

    $donnees = str_replace(':D' , '<img src="http://journal-de-bord.legtux.org/jmb/heureux.gif"', $donnees) ;

    resultat: Vais pouvoir commencer à le lire <img src="http://journal-de-bord.legtux.org/jmb/langue.gif">
    0
  4. BINEJE
     
    Merci Mais j'ai trouvé par moi meme apres 3Heures de recherches.

    index.php
    include("smileys.php");
            //print nl2br(htmlspecialchars($donnees['contenu']));
    	print nl2br($donnees['contenu']);
    


    smileys.php
    <?php
    
    $donnees = str_replace('merci' , '<img src="http://journal-de-bord.legtux.org/jmb/merci.gif">', $donnees) ;
    $donnees = str_replace('pleur' , '<img src="http://journal-de-bord.legtux.org/jmb/pleur.gif">', $donnees) ;
    $donnees = str_replace('idee' , '<img src="http://journal-de-bord.legtux.org/jmb/idee.gif">', $donnees) ;
    $donnees = str_replace('lol' , '<img src="http://journal-de-bord.legtux.org/jmb/lol.gif"', $donnees) ;
    $donnees = str_replace('zzz' , '<img src="http://journal-de-bord.legtux.org/jmb/zzz.gif"', $donnees) ;
    $donnees = str_replace('<3' , '<img src="http://journal-de-bord.legtux.org/jmb/coeur.gif">', $donnees) ;
    $donnees = str_replace(':P' , '<img src="http://journal-de-bord.legtux.org/jmb/langue.gif">', $donnees) ;
    $donnees = str_replace(':O' , '<img src="http://journal-de-bord.legtux.org/jmb/surprise.gif">', $donnees) ;
    $donnees = str_replace(':S' , '<img src="http://journal-de-bord.legtux.org/jmb/S.gif"', $donnees) ;
    $donnees = str_replace(':)' , '<img src="http://journal-de-bord.legtux.org/jmb/content.gif">', $donnees) ;
    $donnees = str_replace(':D' , "<img src='http://journal-de-bord.legtux.org/jmb/heureux.gif'>", $donnees) ;
    ?>
    
    


    Et le Resultat:
    http://journal-de-bord.legtux.org/jmb/index.php
    
    0