Capture de caractères de saut de ligne (saut de ligne, saut de ligne) dans une zone de texte

StackOverflow https://stackoverflow.com/questions/289159

Question

J'ai un formulaire avec un <textarea> et je souhaite capturer tous les sauts de ligne dans cette zone de texte côté serveur et les remplacer par un <br/>.

Est-ce possible?

J'ai essayé de définir white-space:pre le CSS de textarea, mais cela ne suffit toujours pas.

Était-ce utile?

La solution

Consultez la nl2br() . Il devrait faire exactement ce que vous voulez.

Autres conseils

La fonction nl2br() existe pour faire exactement cela:

Cependant, cette fonction ajoute des balises br mais ne supprime pas les nouvelles lignes. Ce n'est généralement pas un problème, mais si vous souhaitez les supprimer complètement et que les retours à la ligne soient également capturés, vous devez utiliser un str_replace ou preg_replace

Je pense que str_replace serait un peu plus rapide mais je n'ai pas fait de benchmark;

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

ou

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

Si vous envisagez d'utiliser str_replace ou preg_replace, vous devez probablement placer le "\r\n" au début du tableau, sinon une séquence \r\n sera traduite en deux balises <br/> (car le \r sera mis en correspondance, puis le \n sera mis en correspondance).

par exemple:

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

ou

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

Pour ceux qui veulent une réponse qui ne repose pas sur nl2br():

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

ou (dans ce cas):

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

Côté PHP: de la chaîne Textarea à la chaîne PHP

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

Côté PHP: chaîne PHP en chaîne TextArea:

<*>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top