[PHP/HTML] Du code HTML sur une seul ligne

Bonjour,

Je recherche une fonction qui pourrait me formater un texte de façon à enlever les retour à la ligne dans le code HTML généré.

En fait je fais appelle à une fonction JavaScript et j’ai l’impression que c’est à cause des retour de ligne dans le code qu’il ne marche pas:


'onmouseover="montre(\'Description : ' . $descrip . '\');" onmouseout="cache();"';

Mon $descrip c’est ceci :

bla blabla blablabla

Mais dans mon code hHTML qui généré ensuite ça donne ceci :

bla
blabla
blablabla

ce qui coupe mon JavaScript sur plusieurs ligne:


onmouseover="montre('Description : bla
blabla
blablabla
blablablabla');" onmouseout="cache();"

Quand j’utilise une phrase sans retour de ligne ça marche parfaitement :confused:

Quelqu’un aurait une solution s’il vous plait ?

Merci d’avance :slight_smile:

ben avec php tu peux faire un str_replace des ‘\n’ par ‘’

Salut !

J’ai déjà essayé cette solution, et me coupe toujours mon code JavaScript :frowning:

est-ce que tu peux nous montrer la partie de code qui génère cet évènement ?

merci

Oui là voilà:


        	$infobulle = 'onmouseover="montre(\'Description : ' . str_replace('\n','', $ligne['description_artbook']) . '\');" onmouseout="cache();"';
        	
        	
        	$details_image = getimagesize('serie/artbook/'.$ligne['image1_artbook']);
        	$largeur = $details_image[0] + 20;
        	$hauteur = $details_image[1] + 20;
      	?>
        	<td width="145" id="detail_bas">
        	<?php 
        	echo '<a href="java script:PopupImage(\'serie/artbook/' .$ligne['image1_artbook']. '\', \'' . $largeur . '\', \'' . $hauteur . '\')"><img src="'. $img. '" border="0" class="border_image"' .$infobulle . '/></a>'; 
        	?>

ici ma variable est $ligne[‘description_artbook’]

tu peux nous donner également un exemple de $ligne[‘description_artbook’] qui déconne ?

Je l’ai donné plus haut: ça me génére ceci :


onmouseover="montre('Description : bla
blabla
blablabla
blablablabla');" onmouseout="cache();"

Ce qui est dans mon $ligne[‘description_artbook’] provient d’un input en multiligne inseré dans la bdd :confused:
Et ce qui est est enregistré dans ma bdd est bien en multiligne, mais je voudrais eviter ceci pour pas que mon JS bug.

J’ai pensé a décomposer la phrase en plusieurs mot, et de le refaire la phrase par la suite sans les saut de ligne, mais je sais pas si c’est une bonne idée.

C’est bizarre mais avec WebDeveloper sous FF, quand je modifie le code HTML, au bout d’un moment quand j’enleve les sauts de ligne ça marche, et quand je les remets ça marche encore.

Alors que des que la page est généré sans que je la touche, ça ne marche pas.

J’y comprends plus rien :confused:

\n ne fonctionne que si les délimiteurs de chaîne utilisés sont des double quote (").

Sinon il cherche ‘\\’, ‘n’…

Oups pardon !

Mais même en mettant str_replace("\n","" , $ligne[‘description_artbook’]), dans mon code la description est sur plusieurs lignes, et mon JS ne fonctionne toujours pas.

Essaye preg_replace(’/(\r\n|\r|\n)/’, ‘’, $s)

mouais, comme ça tu évites tous les cas … pourquoi pas.

:slight_smile: Perso, je stockerai ça dans une variable à part.

Sinon, au passage, et pour info, les chaînes en javascript ne peuvent pas contenir de saut de ligne. Tu dois remplacer ce dernier par \n.