parser et déparser du texte d'un textarea

Eléphanteau du PHP | 13 Messages

04 avr. 2010, 18:29

Bonjour,

Je suis en train de faire une admin et je suis en train de permettre de rentrer du texte dans un texterea avec des balises pour écrire en gras, soulignes... (un peu comme ici).

J'ai donc créer une fonction parse (elle fonctionne très bien).

Maintenant, je souhaite rendre ces texte éditable et je suis en train de faire la fonction deparse... elle fonctionne bien sauf que je ne sais pas gérer les saut de lignes. Pour le moment, ma fonction deparse m'affiche les saut de lignes avec les balises
<br />
, et je voudrais avoir de vrais saut de lignes...

Ci joint un bout de code:

function unparse($content) {
	$html = array(  
		'<italique>$1</italique>',  
		'<gras>$1</gras>');  
	
	$code = array(  
		'`<em>(.+)</em>`isU',  
		'`<strong>(.+)</strong>`isU');
	
	$content = preg_replace($code, $html, $content);
	// Retours à la ligne
	$content =preg_replace('`<(br )/>`isU', '\n', $content); 
	$content =preg_replace('`&lt;(br )/&gt;`isU', '\n', $content); 

       $content = htmlspecialchars($content);

	return $content;
}

Merci.

ps: En éditant ce message, je retrouve bien les sauts de lignes et il n'y a pas comme chez moi
< br/>
ou "\n"

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

04 avr. 2010, 18:34

Bonjour,

Je ne suis pas sûr de comprendre ce que tu veux faire, mais peut être que la fonction nl2br() est ce que tu recherches:
http://fr.php.net/nl2br
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 985 Messages

04 avr. 2010, 18:36

Je ne suis pas sûr non plus de comprendre, mais sinon essaye de remplacer '\n' par "\n"
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphanteau du PHP | 13 Messages

04 avr. 2010, 18:44

ça marche...
Il me semblait l'avoir testé pourtant... En tout cas, c'est bon.

Mammouth du PHP | 985 Messages

04 avr. 2010, 18:55

Les apostrophes empêchent toute exécution de code, le code entre des apostrophes est donc seulement interprété comme une chaine.
A l'inverse, le code entre des guillemets est interprété, et un retour à la ligne même avec cette syntaxe doit l'être pour être reconnu comme un retour à la ligne et non comme une chaine de deux caractères :) .
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.