php - n2br - saltos de línea en un área de texto
salto de linea php br (13)
Ahh, es realmente simple
solo agrega
white-space:pre-wrap;
a su elemento de visualización css
Quiero decir, si está mostrando el resultado usando <p>
entonces su CSS debe ser
p{
white-space:pre-wrap;
}
Sé que al guardar un área de texto, puede usar nl2br () o str_replace para cambiar las etiquetas / n a br, etc. Sin embargo, no estoy seguro de cómo insertar saltos de línea en un área de texto. Parece que no puedo encontrar mucho sobre cómo volver a poner los datos en un área de texto con esos saltos de línea.
Por ejemplo, tengo un formulario donde los usuarios pueden actualizar campos. Entonces el usuario puede ingresar:
foo
bar
baz
Cuando eso se guarda en la base de datos, se guardará como:
foo<br />bar<br />baz<br />
Ahora, cuando ese usuario vuelve a ese formulario después de actualizar una página, todos los campos se completan automáticamente con sus datos anteriores tomando los datos de la base de datos.
Sin embargo, el área de texto muestra las etiquetas br como texto en lugar de agregar en los saltos de línea. También intenté cambiar las etiquetas br a / n esperando que el área de texto las interpretara como saltos de línea, pero sin alegría. Además de esto, también intenté escapar, etc.
Entonces mis preguntas son, ¿se puede hacer esto? O lo que es más importante, puede hacerse utilizando HTML / PHP (estoy usando smarty). Si eso no es posible, ¿se puede hacer usando javascript?
Se apreciarán ejemplos.
gracias por leer
Algunas respuestas incorrectas se publican aquí. en lugar de reemplazar /n
por <br />
, están reemplazando <br />
por /n
Así que aquí hay una buena respuesta para almacenar <br />
en tu mysql cuando ingresaste en textarea:
str_replace("/n", ''<br />'', $textarea);
Desde PHP usando comillas simples para el salto de línea funcionó para mí para soportar los saltos de línea cuando paso esa var a un atributo de valor de área de texto HTML
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;
});
Esto funciona conmigo
str_replace(array("/r", "/n"), '' '', $textareavalue);
La manera simple:
Use esto para insertar en mysql:
$msg = $_GET[''msgtextarea'']; //or POST and my msg field format: text $msg = htmlspecialchars($msg, ENT_QUOTES);
Y use esto para la salida:
echo nl2br($br[''msg'']);
Lado PHP: de la cadena Textarea a la cadena PHP
$newList = ereg_replace( "/n",''|'', $_POST[''theTextareaContents'']);
Lado de PHP: la cadena de PHP vuelve a la cadena TextArea:
$list = str_replace(''|'', '' '', $r[''db_field_name'']);
Lo que encontré funciona en la forma es str_replace (''& lt; br & gt;'', PHP_EOL, $ textarea);
Mi recomendación es guardar los datos en la base de datos con saltos de línea en lugar de analizarlos con nl2br. Debería usar nl2br en la salida no entrada.
Para su pregunta, puede usar php o javascript:
PHP:
str_replace(''<br />'', "/n", $textarea);
jQuery:
$(''#myTextArea'').val($(''#myTextArea'').val().replace(@<br />@, "/N"));
No estoy seguro de que esto sea posible, pero deberías probar <pre><textarea> ... </textarea></pre>
No haga nl2br
cuando lo guarde en la base de datos. Haga nl2br
cuando esté visualizando el texto en HTML. Recomiendo encarecidamente que no almacene ningún formato HTML en la base de datos (a menos que también esté usando un editor de HTML enriquecido, en cuyo caso sería tonto no hacerlo).
Una nueva línea /n
se convertirá en una nueva línea en el área de texto.
Puede usar str_replace
para reemplazar las etiquetas <br />
en caracteres de final de línea.
str_replace(''<br />'', PHP_EOL, $textarea);
Alternativamente, puede guardar los datos en la base de datos sin llamar primero a nl2br
. De esa forma, los saltos de línea se mantendrían. Cuando muestre como HTML, llame a nl2br
. Un beneficio adicional de este enfoque es que requerirá menos espacio de almacenamiento en su base de datos ya que un salto de línea es de 1 carácter en lugar de " <br />
", que es 6.
Puede usar el siguiente código:
$course_description = nl2br($_POST["course_description"]);
$course_description = trim($course_description);
<?php
$smarty = new Smarty;
$smarty->assign(''test'', "This is a /n Test");
$smarty->display(''index.tpl'');
?>
En index.tpl
{$test|nl2br}
En HTML
This is a<br />
test