Page 1 sur 1

exclure les sauts de ligne

Posté : 12 janv. 2008, 19:08
par jp.bond
bonjour,

j'aimerai savoir s'il existe une fonction PHP permettant d'exclure les sauts de ligne d'un enregistrement, un peu comme la fonction stripslashes() le fait avec les slashes.
Le but est que l'enregistrement n'ai pas de discontinuité d'ecriture...

Pourquoi faire me direz vous ?
en fait, j'utilise l'editeur HTML FCK Editor pour l'admin de mon site en php. Et j'ai un petit module de news, chaque news stockée en base de données.
Ces news sont affichées sur ma page d'accueil.
Et pour afficher ces news, je fais appel à un petit script Javascript pour faire défiler les news les unes apres les autres.

Le probleme c'est que si je mets un saut de ligne dans ma news dans l'editeur HTML de mon admin, il enregistre <br> et un saut de ligne en base de données. Et lors de l'affichage par le javascript ca ne marche pas.

Un exemple :
si je saisie :

Code : Tout sélectionner

salut a tous<br>voila la news1
l'editeur HTML enregistre :

Code : Tout sélectionner

salut a tous<br> voila la news1
et ce petit saut de ligne rajouté cause une erreur dans le script javascript d'affichage final, et du coup rien ne s'affiche.

Je peux :
- modifier le script Javascript pour que ca ne cause pas une erreur mais je sais pas faire
- chercher pourquoi FCK Editor ajoute ce saut de ligne mais le code est un peu complexe
- trouver une facon de corriger ce comportement et ca me semble le plus simple...

vous pouvez m'aider ?

Posté : 12 janv. 2008, 19:14
par Elie
En quoi ca peut causer une erreur ?

Fait voir ton script javascript !

Posté : 12 janv. 2008, 19:44
par jp.bond
ca c'est mon script javascript (contenant du PHP...forcement)

Code : Tout sélectionner

<script type="text/javascript"> var pausecontent=new Array() // exemple de fonctionnement non dynamique // pausecontent[0]='<span class="titre1"><img src="images/news_logo.jpg" width="58" height="51" border="0" align="right">Meet xx</span><br><br>7th to 11th of September 2007<br>Hall 3' // pausecontent[1]='<span class="titre1"><img src="images/news_logo.jpg" width="58" height="51" border="0" align="right">Meet xx</span><br><br>7th to 11th of September 2007<br>Hall 3' <? $i = 0; $l_base = eco_connect(); $requete = "SELECT * FROM news"; $resultat = eco_query($l_base,$requete); eco_close($l_base); while ($enregistrement = mysql_fetch_array( $resultat )) { echo " pausecontent[".$i."]='<span class=\"titre1\">".stripslashes($enregistrement["titre_".$lg.""])."</span><br>".stripslashes($enregistrement["txt_".$lg.""])."' "; $i++; } ?> //new pausescroller(name_of_message_array, CSS_ID, CSS_classname, pause_in_miliseconds) new pausescroller(pausecontent, "pscroller1", "texte2", 3000) </script>
et ca c'est ce que ca donne dans la page HTML interpretée (dans le cas où ca fonctionne) :

Code : Tout sélectionner

<script type="text/javascript"> var pausecontent=new Array() pausecontent[0]='<span class="titre1">DECOUVREZ LES PRODUITS xx</span><br><img height="66" alt="" width="82" align="left" border="0" src="/UserFiles/Image/cebit.jpg" />Du 4 a 9 mars 2008 &agrave; Hanovre' pausecontent[1]='<span class="titre1">RENCONTREZ xx</span><br><img height="58" alt="" width="87" align="right" border="0" src="/UserFiles/Image/distree.jpg" />Du 27 au 30 janvier 2008 &agrave; Barcelone' pausecontent[2]='<span class="titre1">LES MARDIS DE xx</span><br><img height="43" alt="" width="83" align="right" src="/UserFiles/Image/xxlogo.jpg" />Pr&eacute;sentation des produits &agrave; la presse<br />Rendez vous bi-mensuel&nbsp;sur Paris<br />Contactez notre attach&eacute; de presse pour participation<br />' //new pausescroller(name_of_message_array, CSS_ID, CSS_classname, pause_in_miliseconds) new pausescroller(pausecontent, "pscroller1", "texte2", 3000) </script>
et ca c'est ce que ca donne dans la page HTML interpretée (dans le cas où ca ne fonctionne pas : rien ne s'affiche) : la différence est dans la 3e news, il y a un saut de ligne dans le code

Code : Tout sélectionner

<script type="text/javascript"> var pausecontent=new Array() pausecontent[0]='<span class="titre1">DECOUVREZ LES PRODUITS xx</span><br><img height="66" alt="" width="82" align="left" border="0" src="/UserFiles/Image/cebit.jpg" />Du 4 a 9 mars 2008 &agrave; Hanovre' pausecontent[1]='<span class="titre1">RENCONTREZ xx</span><br><img height="58" alt="" width="87" align="right" border="0" src="/UserFiles/Image/distree.jpg" />Du 27 au 30 janvier 2008 &agrave; Barcelone' pausecontent[2]='<span class="titre1">LES MARDIS DE xx</span><br><img height="43" alt="" width="83" align="right" src="/UserFiles/Image/xxlogo.jpg" />Pr&eacute;sentation des produits &agrave; la presse<br />Rendez vous bi-mensuel&nbsp;sur Paris<br /> Contactez notre attach&eacute; de presse pour participation<br />' //new pausescroller(name_of_message_array, CSS_ID, CSS_classname, pause_in_miliseconds) new pausescroller(pausecontent, "pscroller1", "texte2", 3000) </script>
le script complet utilisé et détaillé est ici :
http://www.dynamicdrive.com/dynamicindex2/crosstick.htm

merci de ton aide...

Posté : 12 janv. 2008, 20:25
par Berzemus
il suffit de faire un preg_replace(), je dirais..

quelque chôse comme ça (non testé):
$texte=preg_replace("#\n|\n\r#","",$texte);

Posté : 12 janv. 2008, 20:49
par jp.bond
c'est bon ! j'ai trouvé sur un forum de Javascript en fait ;-)

j'utilise ca :

Code : Tout sélectionner

// pour enlever les sauts de ligne en trop $str = stripslashes($enregistrement["txt_".$lg.""]); $order = array("\r\n", "\n", "\r"); //$replace = '<br />'; $replace = ''; // Processes \r\n's first so they aren't converted twice. $newstr = str_replace($order, $replace, $str); echo " pausecontent[".$i."]='".$newstr."' "; $i++;
moi dans mon cas je voulais pas transformer les \r\n en <br> donc $replace est vide mais c'est le meme principe que ce que tu proposais !

merci de ton aide en tout cas

Posté : 13 janv. 2008, 01:23
par Berzemus
Sauf que le format de la nouvelle ligne varie selon les OS et les navigateurs.. windows c'est peut-être \r\n, mais le systèmes linux (et firefox) c'est juste \n ...