Domanda

Ho un modulo con un <textarea> e voglio catturare qualsiasi interruzione di riga in quella textarea sul lato server e sostituirli con un <br/>.

È possibile?

Ho provato a impostare white-space:pre sul CSS del textarea, ma non è ancora abbastanza.

È stato utile?

Soluzione

Dai un'occhiata alla nl2br() . Dovrebbe fare esattamente quello che vuoi.

Altri suggerimenti

La nl2br() esiste proprio per fare esattamente questo:

Tuttavia, questa funzione aggiunge tag br ma in realtà non rimuove le nuove righe - questo di solito non è un problema, ma se vuoi spogliarle completamente e catturare anche i ritorni a capo, dovresti usare un str_replace o preg_replace

Penso che str_replace sia leggermente più veloce ma non ho fatto un benchmark;

$val = str_replace( array("\n","\r","\r\n"), '<br />', $val );

o

$val = preg_replace( "#\n|\r|\r\n#", '<br />', $val );

Se utilizzerai str_replace o preg_replace, probabilmente dovresti posizionare "\r\n" all'inizio dell'array, altrimenti una sequenza \r\n verrà tradotta in due tag <br/> (poiché \r verrà abbinato, quindi \n verrà abbinato).

es:

$val = str_replace( array("\r\n", "\n","\r"), '<br />', $val );

o

$val = preg_replace( "#\r\n|\n|\r#", '<br />', $val );

Per coloro che desiderano una risposta che non si basa su nl2br():

$newList = ereg_replace( "\n",'|', $_POST['theTextareaContents']);

o (in questo caso):

$newList = ereg_replace( "\n",'<br/>', $_POST['theTextareaContents']);

Lato PHP: dalla stringa Textarea alla stringa PHP

$list = str_replace('|', '&#13;&#10;', $r['db_field_name']);

Lato PHP: stringa PHP torna alla stringa TextArea:

<*>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top