Bonjour,
Je bosse actuellement sur un site que je développe avec Symfony2, et je me heurte à un petit soucis, qui me paraissait simple dans la tête, mais finalement difficile à trouver (Je fais du PHP comme un mécano du dimanche, par très souvent ).
J'ai un formulaire, réservé à l'admin avec un champs "Message". Dans ce message (textarea), j'ajoute dans mon texte des liens. Ces liens que je les encadres avec des balises (comme on connait si bien : [img][/img]).
Ensuite, lorsque je valide le formulaire, j'aimerais afficher les images que pourraient contenir le texte, et là je sais pas vraiment
Biensûr j'ai trouvé des solutions, que je trouve pas terrible :
- Rechercher la position de la balise [img] si elle existe, ensuite la position de [/img] puis faire un str_replace avec le lien de l'image <img src="...." /> de ce qui se trouve entre les deux positions.
- Ou alors utiliser preg_replace et suivant un peu le même principe.
Mais j'ai l'impression de bidouiller en utilisant ces méthodes ...
Soit je ne tape pas les bons mots sur google, soit j'ai pas trouvé de fonctions qui remplacerait le contenu par un autre entre 2 chaînes du genre
Je sais que la méthode est beaucoup utilisé sur les forums, mais si quelqu'un pourrait m'énoncer le principe, un nom de fonction ou autre, je suis preneur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part replace_magique($balise1, $balise2, "new_contenu");
Biensûr, je ne m'occupe pas de l’hébergement de l'image ici, on suppose que l'url entre les deux balises est une URL http du net.
Merci !
Edit :
Pour le moment j'ai fait n truc simple :
où $info est ma valeur récupérée par le $_POST du textarea après vérification du contenu (en réalité, le textarea est stocké en base, et est affichée plus tard, en récupérant une liste d'objet info).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 for($i=0;$i <= count($infos)-1;$i++) { $contenu = preg_replace('!\[img\](.+)\[/img\]!isU', '<img src="$1" />', $infos[$i]->getContenuInfos()); $infos[$i]->setContenuInfos($contenu); }
Mais je pense que c'est très sale comme solution ...
Le problème c'est que le contenu est au format "Chaine" et donc pas interprété comme balise. Comment faire ?
Partager