[PHP/JS] Grande chaine de car dans une fonction js.

Grande chaine de car dans une fonction js. [PHP/JS] - PHP - Programmation

Marsh Posté le 26-04-2003 à 01:38:41    

Salut!
 
J'ai un petit problème avec PHP et JS. Je m'explique :
J'ai une chaine issue de Mysql, retraitée par PHP pour le \n et je souhaite mettre cette grande chaine en tant que variable d'un fonction js.
ex :  

Code :
  1. affichage('<?php echo nl2br($text); ?>');


 
Le problème, c'est en cas de chaine trop longue et contenant plein de \n, je me retrouve avec une fonction js étalé sur plusieurs ligne
ex :  

Code :
  1. affichage('fdazdadzadzadzazdazd
  2. <br /> zefzfezfezefzef
  3. <br /> zefzfezfezefzef
  4. <br /> zefzfezfezefzef');


Du coup, la fonction ne marche plus et j'ai une erreur du style "unterminated string literal".
 
Comment faire pour que la chaine ne soit pas étalé sur plusieurs lignes et pour que la fonction soit reconnue?
 
Merci de votre aide.


Message édité par Scoubidoo le 26-04-2003 à 01:39:11
Reply

Marsh Posté le 26-04-2003 à 01:38:41   

Reply

Marsh Posté le 26-04-2003 à 14:16:44    

up

Reply

Marsh Posté le 26-04-2003 à 14:37:20    

Code :
  1. <br />


Et avec un truc pareil dans le code de ta focntion javascript, tu t'étones encore que la fonction décone?
Il ne faut pas mettre de balise html dans du code javascript. (du moins pas en dehors des chaines de caractères)
Vire donc ton nl2br et ca ira mieux.


Message édité par omega2 le 26-04-2003 à 14:37:39
Reply

Marsh Posté le 26-04-2003 à 18:11:23    

non, là n'est pas le problème (du moins pour l'erreur retournée),
en fait js supporte assez mal les retours à la ligne ds une string.
L'erreur se produit ici (*) :

Code :
  1. affichage('fdazdadzadzadzazdazd (*)
  2. <br /> zefzfezfezefzef
  3. <br /> zefzfezfezefzef
  4. <br /> zefzfezfezefzef');


 
Pour supprimer cette erreur tu dois produire ceci :

Code :
  1. affichage('fdazdadzadzadzazdazd<br/>zefzfezfezefzef<br/>zefzfezfezefzef<br/>zefzfezfezefzef');


 
Après faut voir pour <br\> : <br> devrait suffire, si je ne me trompe pas.
 
Quant à ne pas inclure de code html ds du javascript : c'est un peu limiter le javascript (enfin plus qu'il ne l'est)...
a+


Message édité par omicron le 26-04-2003 à 18:14:48
Reply

Marsh Posté le 26-04-2003 à 18:15:30    

omicron a écrit :


 
Après faut voir pour <br\> : <br> devrait suffire, si je ne me trompe pas.
 
Quant à ne pas inclure de code html ds du javascript : c'est un peu limiter le javascript (enfin plus qu'il ne l'est)...
a+


 
standard XHTML le <br> devient <br />, on ferme les balises c'est une bonne habitude a prendre  ;)


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 26-04-2003 à 18:29:19    

ah, si ce standard s'imposant le dit ;)

Reply

Marsh Posté le 26-04-2003 à 20:16:34    

omicron a écrit :


 
Pour supprimer cette erreur tu dois produire ceci :

Code :
  1. affichage('fdazdadzadzadzazdazd<br/>zefzfezfezefzef<br/>zefzfezfezefzef<br/>zefzfezfezefzef');


 
Après faut voir pour <br\> : <br> devrait suffire, si je ne me trompe pas.
 


 
Merci pour vos aides.
 
J'avais bien compris que js avait du mal avec les retours à la ligne . si seulement, je pouvais tout mettre tout sur un ligne .... le problème c'est que je ne peux pas car le contenu mis dans la fonction affichae est issu d'un variable php.
 

Code :
  1. affichage('<?php echo $mon_texte_avec_des_br; ?>');


 
lors de l'interpret par php, le contenu de $mon_texte_avec_des_br est étalé par php sur plusieurs lignes...
et ca je ne comprends pas du tout pkoi.
 
Si quelqu'un peut m'éclairer, svp.
 
 
 

Reply

Marsh Posté le 26-04-2003 à 20:21:20    

omega2 a écrit :

Code :
  1. <br />


Et avec un truc pareil dans le code de ta focntion javascript, tu t'étones encore que la fonction décone?
Il ne faut pas mettre de balise html dans du code javascript. (du moins pas en dehors des chaines de caractères)
Vire donc ton nl2br et ca ira mieux.


 
Bah écoute pour le moment, j'ai vu des fonctions js avec tout plein de code HTML dedans tourné sans prob sur différents navigateurs , meme Netscape 4.5....

Reply

Marsh Posté le 26-04-2003 à 22:52:38    

up

Reply

Marsh Posté le 26-04-2003 à 23:47:45    

Scoubidoo a écrit :


 
lors de l'interpret par php, le contenu de $mon_texte_avec_des_br est étalé par php sur plusieurs lignes...
et ca je ne comprends pas du tout pkoi.
 
Si quelqu'un peut m'éclairer, svp.


 
essaie de voir si tu peux filtrer les retours à la ligne  
- soit par une fonction toute faite
- soit, si l'interpréteur php l'accepte, de virer ttes les occurences du caractère 'retour à la ligne' (le 13 je crois) de ta chaîne.
 
a+


Message édité par omicron le 26-04-2003 à 23:49:06
Reply

Marsh Posté le 26-04-2003 à 23:47:45   

Reply

Marsh Posté le 27-04-2003 à 01:15:32    

Si le problème vient vraiment de là, fais toi une fonction nl2br qui remplace les \n par des <br />

Reply

Marsh Posté le 27-04-2003 à 01:31:34    

omicron a écrit :


 
essaie de voir si tu peux filtrer les retours à la ligne  
- soit par une fonction toute faite
- soit, si l'interpréteur php l'accepte, de virer ttes les occurences du caractère 'retour à la ligne' (le 13 je crois) de ta chaîne.
 
a+


 
La fonction nl2br transforme les \n en <br /> mais apparemment, l'interpreteur met kan meme des \n quand il écrit son texte juste avant le <br />.  
Il se produit le meme phénomène si je remplace avec la fonction str_replace(..) (j'ai découvert la fonction str_ireplace, c'ets koi ?).
 
C'est vraiment bizarre alors je me demande pas si c'est le fait de faire mes tests sous un serveur EZphp sous winXP qui pourrait avoir ce prob vu que le retour à la ligne est différent d'unix.
 
En tout cas, ça m'énerve car je comprends pas pourquoi la chaine php n'est pas mise sur une seule ligne.

Reply

Marsh Posté le 27-04-2003 à 12:11:04    

up

Reply

Marsh Posté le 27-04-2003 à 13:22:05    

et sinon vois si tu peux regler le pb lors de la formation de la chaîne,
les retours à la ligne ne sont pas apparus seuls... enfin cherche un peu... !!!

Reply

Marsh Posté le 27-04-2003 à 14:29:29    

En PHP, fait un replace de "\n" par "<br/>" ou "" dans ta variable.

Reply

Marsh Posté le 27-04-2003 à 15:29:21    

omicron a écrit :

et sinon vois si tu peux regler le pb lors de la formation de la chaîne,
les retours à la ligne ne sont pas apparus seuls... enfin cherche un peu... !!!


 
la chaine est issue de Mysql donc peut-etre qu'il faudrait faire quelque chose avec mysql avant que ça arrive à php ....

Reply

Marsh Posté le 27-04-2003 à 15:49:40    

Fait ce que je te dis, tu n'auras plus de problème :o

Reply

Marsh Posté le 27-04-2003 à 15:52:32    

MagicBuzz a écrit :

Fait ce que je te dis, tu n'auras plus de problème :o


 
bah j'ai essayé avec $str=str_replace("\n","<br />",$str); et j'ai toujours le meme prob!!  :(

Reply

Marsh Posté le 27-04-2003 à 16:04:34    

Scoubidoo a écrit :


 
bah j'ai essayé avec $str=str_replace("\n","<br />",$str); et j'ai toujours le meme prob!!  :(  


essaie en remplacant \n\r, pas seulement \n  :jap:

Reply

Marsh Posté le 27-04-2003 à 16:07:12    

t sûr que t'as bien fait :
 
affichage('<?php echo str_replace("\n", "<br/>", $mon_texte_avec_des_br; ?>';);
 
:heink:

Reply

Marsh Posté le 27-04-2003 à 16:08:14    

sinon, peut-être que tu as un retour à la ligne unix alors que tu remplaces un retour à la ligne windows, ou vice versa.
 
a ce moment, replace chr(13) et chr(10)

Reply

Marsh Posté le 27-04-2003 à 16:21:22    

MagicBuzz a écrit :

sinon, peut-être que tu as un retour à la ligne unix alors que tu remplaces un retour à la ligne windows, ou vice versa.
 
a ce moment, replace chr(13) et chr(10)

oui ou \n et \r comme je l'ai dit plus haut :sarcastic:

Reply

Marsh Posté le 27-04-2003 à 21:20:56    

Merci à vous tous qui m'avait aidé!
 
La solution était :
$str=str_replace("\r\n","<br />",$str);  
 
Maintenant, je n'ai plus de prob avec mes fonctions JS....
Encore merci!
 

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed