Page 1 sur 1

Annuler le nl2br dans un array

Posté : 09 mai 2010, 19:00
par Valentin45000
Bonjour,
Bon je donne tout de suite le code :
<?php function parseZCode($content) {
	// Parsage des balises
	$zcode = array(  
		'`<couleur_rouge>(.+)</couleur_rouge>`isU',
		'`<couleur_bleu>(.+)</couleur_bleu>`isU',
		'`<couleur_vert>(.+)</couleur_vert>`isU',
		'`<couleur_turquoise>(.+)</couleur_turquoise>`isU',
		'`<code_php>(.+)</code_php>`isU', 
		'`<code_html>(.+)</code_html>`isU', 
		'`<code_css>(.+)</code_css>`isU', 
		'`<code_js>(.+)</code_js>`isU', 
		'`<italique>(.+)</italique>`isU',  
		'`<gras>(.+)</gras>`isU',
		'`<barre>(.+)</barre>`isU',
		'`<lien>(.+)</lien>`isU',
		'`<lien url="(.+)">(.+)</lien>`isU',
		'`<image>(.+)</image>`isU',
		'`<citation>(.+)</citation>`isU',
		'`<citation nom="(.+)">(.+)</citation>`isU',
		'`<citation lien="(.+)">(.+)</citation>`isU',
		'`<taille valeur="(.+)">(.+)</taille>`isU'
	);  
	
	$html = array(  
		'<font color="#BF0B0B">$1</font>', 
		'<font color="#0B3BBF">$1</font>', 
		'<font color="#0A7D12">$1</font>', 
		'<font color="#269CA9">$1</font>',  
		'<pre name="code" class="php">$1</pre>', 
		'<pre name="code" class="html">$1</pre>', 
		'<pre name="code" class="css">$1</pre>', 
		'<pre name="code" class="js">$1</pre>',  
		'<em>$1</em>',  
		'<strong>$1</strong>',
		'<del>$1</del>', 
		'<a href="$1">$1</a>',
		'<a href="$1">$2</a>',
		'<img src="$1" alt="Image utilisateur" />',
		'<br /><span class="citation">Citation</span><div class="citation2">$1</div>',
		'<br /><span class="citation">Citation : $1</span><div class="citation2">$2</div>',
		'<br /><span class="citation"><a href="$1">Citation</a></span><div class="citation2">$2</div>',
		'<span class="$1">$2</span>'
	); 
	$content = htmlspecialchars($content);
	$content = preg_replace($zcode, $html, $content);
	
	// parsage des smilies
	$smiliesName = array(' :bleuh: ', ' :clin: ', ' :colere: ', ' :content: ', ' :euh: ', ' :g_s: ', ' :hein: ', ' :lol: ', ' :oh: ', ' :sourire: ', ' :triste: ', ' :zut: ');
	$smiliesUrl  = array( 'bleuh.jpg', 'clin.jpg', 'colere.jpg', 'content.jpg', 'euh.gif', 'g_s.jpg', 'hein.jpg', 'lol.gif', 'oh.jpg', 'sourire.jpg', 'triste.jpg', 'zut.jpg',);
	$smiliesPath = "http://pause-montage.host56.com/smilies/";
	
	for ($i = 0, $c = count($smiliesName); $i < $c; $i++) {
		$content = preg_replace('`' . $smiliesName[$i] . '`isU', '<img src="' . $smiliesPath . $smiliesUrl[$i] . '" alt="smiley" />', $content);
	}
	
	// Rtours à la ligne
	$content = $content; 
	
	return nl2br($content);

}
echo parseZCode($donnees['mess']); 
}
else{
echo "<b><font color=\"red\">Erreur 404</font></b>";
}?>
A la fin on voit le nl2br.
Problème je voudrais pas qu'il touche ses lignes :
'<pre name="code" class="php">$1</pre>', 
'<pre name="code" class="html">$1</pre>', 
'<pre name="code" class="css">$1</pre>', 
'<pre name="code" class="js">$1</pre>',  
Comment je peut faire ?
Merci d'avance.
Cordialement.

Re: Annuler le nl2br dans un array

Posté : 09 mai 2010, 19:16
par AB
Le plus simple serait que tu formate ces lignes en questions pour qu'elles s'affichent correctement avec nl2br.

De toutes façons tu utilises un code obsolète ex : font color= ... profites en pour faire le ménage.
Et puis je ne vois pas à quoi peut servir $content = $content;

Re: Annuler le nl2br dans un array

Posté : 09 mai 2010, 19:21
par Valentin45000
Moi non plus :lol:
Le plus simple serait que tu formate ces lignes en questions pour qu'elles s'affichent correctement avec nl2br.
Justement je ne veut pas que le nl2br prenne effet sur elle.

Re: Annuler le nl2br dans un array

Posté : 09 mai 2010, 20:03
par AB
Bon disons les choses autrement :
A quoi servent les balises <pre> ? Ne pourrais tu pas les remplacer ?

Re: Annuler le nl2br dans un array

Posté : 09 mai 2010, 21:03
par Valentin45000
Non je ne peut absolument pas les remplacer, elle font référence au script Syntaxhighlighter.

Re: Annuler le nl2br dans un array

Posté : 09 mai 2010, 23:22
par blof
Bonsoir,

en espérant qu'il y ait une autre solution :? :
//      replacer "return nl2br($content);" par :

        $content = nl2br($content);
        $content = preg_replace('#(<pre name=.*</pre>)#se', "str_replace('<br />', '', '$1')", $content);
        return $content;
Sinon, je ne connais pas ce script "Syntaxhighlighter" ( j'imagine qu'il fait de la coloration syntaxique )
Mais es-tu sûr qu'il ne fonctionne pas si tu remplaces la balise "pre" par la balise "div" ?

Juste pour voir, si tu remplaces '<pre name="code" class="php">$1</pre>', par '<div name="code" class="php">$1</div>', ça donne quoi ?

Re: Annuler le nl2br dans un array

Posté : 10 mai 2010, 00:11
par AB
Et puis comme déjà dit, il est obsolète ton code Syntaxhighlighter. On emploie plus fonte color depuis longtemps, et par exemple dans cette page il y a bien de la coloration syntaxique mais tu ne trouveras pas de balise <pre dans le code source.
Donc plutôt que de l'adapter aux nouvelles normes (ce qui doit être faisable) je me demande si tu ne ferais pas mieux d'en trouver un autre... ou chercher s'il n'y a pas une version plus récente.

Re: Annuler le nl2br dans un array

Posté : 10 mai 2010, 10:41
par valentin45000
En trouver un autre je veut bien, mais encore faut-il qu'il s'adapte à se code php, donc il doit pouvoir s'inclure en html comme Syntaxhighlighter, par exemple Geshi s'inclue avec du php.
Et à part ses deux là je voit pas.

Re: Annuler le nl2br dans un array

Posté : 10 mai 2010, 18:57
par valentin45000
"blof" ça ne marche pas.
Mais si vous avez une idée pour intégré Geshi je veut bien ^^

Re: Annuler le nl2br dans un array

Posté : 10 mai 2010, 19:01
par stealth35
t'enlève le nl2br
et dans ton css tu rajoutes un white-space:pre; a ton body

Re: Annuler le nl2br dans un array

Posté : 10 mai 2010, 19:27
par valentin45000
Super !
J'en revient que la solution était si simple (tu me diras c'est toujours le plus simple que l'ont cherche jamais).

Re: Annuler le nl2br dans un array

Posté : 10 mai 2010, 19:32
par AB
Oui mais il est peu propable que cela fonctionne avec d'anciennes versions d'IE (IE6 notamment). Cela dit si ça fonctionne à partir d'IE7 (à vérifier) tu peux peut-être faire l'impasse, après tout cette fonctionnalité n'est peut-être pas indispensable au bon fonctionnement de ton site...

Re: Annuler le nl2br dans un array

Posté : 10 mai 2010, 19:56
par valentin45000
Non effectivement, se n'est pas indispensable mais mieux.
Ceci dit vivement que IE marche aussi bien que FF (désolé pour les fan d'IE :lol: )