Capture de caractères de saut de ligne (saut de ligne, saut de ligne) dans une zone de texte
-
08-07-2019 - |
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.
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('|', ' ', $r['db_field_name']);
Côté PHP: chaîne PHP en chaîne TextArea:
<*>