Cela peut sembler une dupe, mais soyez assurés que ce n'est pas le cas - j'ai cherché à la fois SO ainsi que le reste du Web pour une réponse à mon problème et j'ai fini par trouver les mêmes «solutions» insuffisantes encore et encore. Quoi qu'il en soit, voilà:
J'enregistre les entrées utilisateur d'une zone de texte dans une base de données MySQL (dans un environnement WordPress, mais cela ne devrait pas avoir d'importance pour ce problème, je crois). Il est ensuite récupéré de la base de données pour être montré aux administrateurs dans le backend du site. Le problème se produit lorsque les utilisateurs soumettent du texte avec des sauts de ligne (c'est-à-dire appuyez sur la touche Entrée).
Un exemple de chaîne peut ressembler à ceci:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!
Greetings,
Bill
Il n'y a pas de caractères de fin de ligne ("\ n", "\ r" ou autre) dans la chaîne.
J'utilise nl2br()
dessus pour générer une sortie HTML, mais ce n'est pas suffisant. Le résultat est alors:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br />
<br />
Greetings,<br />
Bill
Quel est, pour autant que je sache, le nl2br()
résultat attendu , car cela insère les balises et n'est pas censé remplacer les sauts de ligne en premier lieu?
Cependant, le format dont j'ai besoin serait le suivant:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br /><br />Greetings,<br />Bill
Si la chaîne contenait des caractères EOL tels que "\ n", je la frapperais avec str_replace()
ou preg_replace()
et en finirais avec, mais je n'ai aucune idée de l'aiguille pour alimenter l'une de ces fonctions s'il n'y a pas de caractères là en premier lieu.
Je peux accéder manuellement au champ pertinent dans la base de données, appuyez sur Retour arrière pour chaque saut de ligne et ce que je veux faire plus tard avec la chaîne fonctionne. Je sais donc que j'ai besoin du format ci-dessus.