[PHP]afficher une image avec str_replace.

Fermé
zoutai - Modifié par zoutai le 1/04/2012 à 00:42
 zoutai - 1 avril 2012 à 04:48
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 !

A voir également:

2 réponses

Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 274
Modifié par Atropa le 1/04/2012 à 03:35
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
4
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 !
0