PHP/GD avec TinyMCE

Mammouth du PHP | 687 Messages

07 déc. 2015, 11:13

Bonjour,

Je souhaiterais importer via un <form> du texte généré par tinyMCE.
Malheureusement mon code GD fait que le code est afficher en brut dans mon image : <p>aaaaaaaaaaaaaaaaaaaaaaa</p> <br /><p>bbbbbbbbbbbbbbbbbbbbbbbbbbbb</p>

Avez-vous une solution pour régler ce problème ?
Merci par avance pour votre aide.
Cordialement,

codage GD :
<?php
header('Content-type: image/gif'); 
/* * *******************************  * Parametre  * ********************************  */ 
$largeur = 600; /* longueur de l'image */ 
$hauteur = 600; /* hauteur de l'image */ 
$image = imagecreate($largeur, $hauteur); 
/* Background */ 
$image = imagecreatefromgif("2016/2016.gif");
/* Couleur du text */ 
$couleurTxt =  imagecreate($image, 255, 255, 0); 
/* texte à mettre dans l'image */ 
$suject = str_replace('<p>','',$_GET['fichier']); 
$suject = str_replace('</p>','',$suject); 

/* Taille du texte */ 
$font = 3; 
/* Hauteur et largeur des caratères */ 
$largeurCaractere = ImageFontWidth($font); 
$hauteurCaractere = ImageFontHeight($font); 
/* Longueur du texte (taille caratère X nombre de caractère) */ 
$largeurTxt = $largeurCaractere * strlen($suject); 
/* Recherche de la position horizontale centrale pour centrer le texte */ 
$positionCentreHor = ceil(($largeur - $largeurTxt) / 2); 
/* Recherche de la position horizontale centrale pour centrer le texte */ 
$positionCentreVer = 400; 
/* Ajout du texte au centre de l'image */ 
$image_string = ImageString($image, $font, $positionCentreHor, $positionCentreVer, $suject, $couleurTxt); 
/* Création de l'image */ 
imagegif($image); 

?>
Mon image s'affiche avec le texte grâce à :
<img src='http://site.fr/image.php?fichier=$_POST[elm1]'>
Merci par avance pour votre aide.
Cordialement,

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

07 déc. 2015, 11:49

Bonjour,

La fonction ImageString() de GD ne permet pas de gérer la mise en forme en HTML (gras, italique, paragraphe...), tu peux juste mettre du texte brut avec cette fonction.
Pour transformer ton code HTML en texte brut, tu peux utiliser la fonction strip_tags()
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 687 Messages

07 déc. 2015, 11:58

Merci.
Ta fonction fonctionne très bien.
Les balise ne sont plus visibles.

Par contre lorsqu'il y a un <br />, le saut de ligne ne se fait pas?
Comment gérer la chose?

Merci :-)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

07 déc. 2015, 15:08

Malheureusement, ImageString() ne gère pas les sauts de ligne nativement

La solution avec ImageString(), la solution est de faire un explode() sur les <br /> et de faire ensuite une boucle avec autant de ImageString() que tu déplaceras de la hauteur d'une ligne.
Voici une fonction qui fait cela proprement :
https://secure.php.net/manual/en/functi ... php#116501
Quand tout le reste a échoué, lisez le mode d'emploi...