Je sais que lorsque vous enregistrez une zone de texte, vous pouvez utiliser nl2br () ou str_replace pour remplacer les balises/n par les balises br, etc. Je n'arrive pas à trouver grand chose à propos de la réintégration des données dans une zone de texte contenant ces sauts de ligne.
Par exemple, j'ai un formulaire où les utilisateurs peuvent mettre à jour des champs. Donc, l'utilisateur peut entrer:
foo
bar
baz
Lorsque cela est enregistré dans la base de données, il sera enregistré comme suit:
foo<br />bar<br />baz<br />
Désormais, lorsque cet utilisateur revient à ce formulaire après une actualisation de page, tous les champs sont automatiquement renseignés avec leurs données précédentes en extrayant les données de la base de données.
Cependant, la zone de texte affiche les balises br sous forme de texte au lieu d’ajouter des sauts de ligne. J'ai aussi essayé de changer les balises br en/n en espérant que textarea les interprète comme des sauts de ligne, mais pas de joie. En plus de cela, j'ai aussi essayé de m'échapper, etc.
Donc, mes questions sont ce que cela peut être fait? Ou plus important peut-il être fait en utilisant HTML/PHP (im using smarty). Si ce n'est pas possible, peut-on utiliser javascript?
Des exemples seraient appréciés.
merci d'avoir lu
Ne faites pas nl2br
lorsque vous l’enregistrez dans la base de données. Faites nl2br
lorsque vous affichez le texte en HTML. Je peux fortement recommander de ne stocker aucun formatage HTML dans la base de données (sauf si vous utilisez également un éditeur HTML riche, auquel cas il serait ridicule de ne pas le faire).
Une nouvelle ligne \n
deviendra simplement une nouvelle ligne dans la zone de texte.
Vous pouvez utiliser str_replace
pour remplacer les balises <br />
par des caractères de fin de ligne.
str_replace('<br />', PHP_EOL, $textarea);
Vous pouvez également enregistrer les données dans la base de données sans appeler au préalable nl2br
. De cette façon, les sauts de ligne resteraient. Lorsque vous affichez en HTML, appelez nl2br
. Un autre avantage de cette approche est qu’elle nécessiterait moins d’espace de stockage dans votre base de données, car un saut de ligne correspond à 1 caractère, par opposition à "<br />
" qui correspond à 6.
Ahh, c'est vraiment simple
il suffit d'ajouter
white-space:pre-wrap;
à votre élément d'affichage css
Je veux dire si vous montrez le résultat en utilisant <p>
, alors votre css devrait être
p{
white-space:pre-wrap;
}
Vous pouvez utiliser le code suivant:
$course_description = nl2br($_POST["course_description"]);
$course_description = trim($course_description);
Ma recommandation est de sauvegarder les données dans la base de données avec les sauts de ligne au lieu de les analyser avec nl2br. Vous devez utiliser nl2br en sortie non en entrée.
Pour votre question, vous pouvez utiliser php ou javascript:
PHP:
str_replace('<br />', "\n", $textarea);
jQuery:
$('#myTextArea').val($('#myTextArea').val().replace(@<br />@, "\N"));
Certaines mauvaises réponses sont affichées ici . Au lieu de remplacer \n
par <br />
, elles remplacent <br />
par \n
Donc, voici une bonne réponse pour stocker <br />
dans votre mysql lorsque vous avez entré textarea:
str_replace("\n", '<br />', $textarea);
Ce que j'ai trouvé fonctionne sous la forme est Str_replace ('& lt; br & gt;', PHP_EOL, $ textarea);
De PHP avec des guillemets simples pour le saut de ligne m'a permis de prendre en charge les sauts de ligne lorsque je transmettais var à une zone de texte HTML value attribut
PHP
foreach ($videoUrls as $key => $value) {
$textAreaValue .= $value->video_url . '\n';
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
HTML/JS
$( document ).ready(function() {
var text = "<?= htmlspecialchars($textAreaValue); ?>";
document.getElementById("video_urls_textarea").value = text;
});
Côté PHP: de chaîne Textarea à PHP chaîne
$newList = ereg_replace( "\n",'|', $_POST['theTextareaContents']);
Côté PHP: PHP chaîne en chaîne TextArea:
$list = str_replace('|', ' ', $r['db_field_name']);
Cela fonctionne sur moi.
str_replace(array("\r", "\n"), ' ', $textareavalue);