Liaison PHP/JS : Empêcher un retour à la ligne en PHP

Résolu/Fermé
Cielmonbivouac - 19 sept. 2022 à 11:33
 Cielmonbivouac - 19 sept. 2022 à 15:48

Bonjour à tous,

Voilà, j'ai un petit problème à vous soumettre concernant un code et un problème récurant que je rencontre en JS, quand je veux insérer du script PHP dedans, appelant une donnée stockée dans ma BDD (MySQL). 

Pour être plus clair  :

Au clic d'une div, je veux faire apparaitre un description qui est stocké dans ma base de donnée sous option1_description.

B_description_option.innerHTML = '<strong>Description de l\'option n°3 :</strong> <?php echo valid_donnees_JS($product['option3_description']); ?>';

Pour résoudre les problèmes de slashs et de saut de ligne, j'ai créé une petite fonction : "valid-donnees_JS" qui est la suivante :

// Fonction des données insérées dans JS [utiliser valid_donnees_JS]
		function valid_donnees_JS($donnees){
        $donnees = nl2br($donnees);
        $donnees = addslashes($donnees);
        return $donnees;}

Bon, du coup, jusque là, ça marche, on a bien les slashs retournés et les <br> qui s'ajoutent. Miracle !

Mais, il reste un problème, c'est quand le PHP s'insère dans le JS, il garde les sauts de ligne, ce qui fait planter le code :

(code exécuté après passage du PHP ) :

Les sauts de ligne font planter le code

Une idée ?

Merci par avance à tous et bonne journée !!
Windows / Firefox 104.0

A voir également:

2 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
19 sept. 2022 à 14:26

Bonjour,

Sans voir les données brutes stockées dans ta bdd .. difficile de te répondre.

Mais à mon avis, il faudrait nettoyer la chaine en faisant du preg_replace sur les caractères de fin de ligne genre \n \r \r\n chr(13) chr(10)


1
Cielmonbivouac
19 sept. 2022 à 15:48

Salut,

Merci beaucoup pour ta réponse !

Effectivement, c'était ça. J'ai repris ma fonction en faisant :

function valid_donnees_JS($donnees){
        $donees = nl2br($donnees);
        $donnees = addslashes($donnees);
        $donnees = trim($donnees);
        $donnees = str_replace(["\r", "\n"], "", $donnees);
        $donnees = preg_replace("/\r|\n/", "", $donnees);
        return $donnees;}

Ca fonctionne comme ça :)

Merci beaucoup et à bientôt !

0