[PHP]afficher une image avec str_replace.

Bonjour,

Voilà, je me code un blog en local (vraiment minimal) tout marche bien et j'en suis plutôt content. Je me suis donc mis en tête de l'améliorer un petit peu : quand on -je- met une url entre les balises [img] et /img je veut qu'il me les remplace dans la chaine de caractère (c-a-d le contenu du billet) par "<img src='" et "'/ > . Rien de bien compliqué apparemment avec la fonction str_replace ! Mais voilà le remplacement ne se fait pas et il m'affiche bêtement [img]xxx/img. (je n'utilise pas htmlspecialchars pour l'affichage).
voici le code :

<header style="font-size:75px;"><center><a href="minimal-bloging.php"><span style="font-size:120px;">M</span>inimal <span style="font-size:120px;">B</span>log</a></center></header> 
<center><form id=post method="post"> 
  <fieldset> 
    <legend>Post a new text:</legend> 
        <label for=nom>Content:</label><br /> 
        <textarea id=content name=content rows=3  required style="resize:none; width:600px; font:italic;" placeholder="Type here your text..."></textarea> 
    <br /> 
    <button type=submit>Blog it !</button> 
  </fieldset> 
</form></center> 
<?php  
if(isset ($_POST['content'])){  
/*
*
*
*C'EST ICI QUE CA PLANTE !!!!
*
*/
$content =($_POST['content']); 
  str_replace("[img]", "<img src=\"", $content); 
  str_replace("/img", "\"/ >", $content); 
$date =  time(); 
try 
{ 
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; 
    $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options); 

    $req = $bdd->prepare('INSERT INTO entry(entry,date) VALUES(:content, :date)'); 
 $req->execute(array( 
 'content' => $content, 
 'date' => $date 
 )); 
     
    echo '<br />Succefuly posted ! ;-)'; 
 echo ("<script type=\"text/javascript\"> 
<!-- 
var obj = 'window.location.replace(\"minimal-bloging.php\");'; 
setTimeout(obj,1000); 
// --> 
</script>"); 
} 
catch(Exception $e) 
{ 
    die('Erreur : '.$e->getMessage()); 
} 
}  
?> 

Merci à vous !

2 réponses

  1. bonsoir,

    c'est normal ! tu ne récupère pas ce que tu renvoi tes str_replace

     $content = str_replace('[img]', '<img src="', $content);  
      $content = str_replace('/img', '"/ >', $content); 


    utilise des cotes simple ' au lieu des double " pour définir tes chaines les doubles cotes ne doivent être utilisé que si il y a des variables a l'intérieur est que la concaténation n'est pas possible par exemple ce qui est rare ou pour des caractère spéciaux comme \r \n \t par exemple
    1. Tu n'as pas idée comme je me sent stupide là tout de suite d'avoir cherché pendant une heure en ayant remplacé le tout par de jolis regex...
      Merci à toi !