quebras de linha de captura (de nova linha, de alimentação de linha) caracteres de uma área de texto
-
08-07-2019 - |
Pergunta
Eu tenho um formulário com uma <textarea>
e quero capturar qualquer quebra de linha em que textarea no lado do servidor, e substituí-los com um <br/>
.
É possível?
Eu tentei configuração white-space:pre
em CSS do textarea
, mas ainda não é suficiente.
Solução
Tenha um olhar para o href="http://ca3.php.net/manual/en/function.nl2br.php" rel="nofollow noreferrer"> nl2br()
função . Ele deve fazer exatamente o que você quer.
Outras dicas
A função nl2br()
existe para fazer exatamente isso:
No entanto, essa função adiciona marcas br mas na verdade não remover as novas linhas - isso geralmente não é um problema, mas se você quiser tira-los e pegar retornos de carro completamente bem, você deve usar um str_replace
ou preg_replace
Eu acho que str_replace seria um pouco mais rápido, mas eu não aferido;
$val = str_replace( array("\n","\r","\r\n"), '<br />', $val );
ou
$val = preg_replace( "#\n|\r|\r\n#", '<br />', $val );
Se você estiver indo para usar str_replace
ou preg_replace
, você provavelmente deve colocar o "\r\n"
no início da matriz, caso contrário, uma seqüência \r\n
será traduzida em duas tags <br/>
(desde o \r
serão combinados, e então o \n
será combinado).
por exemplo:
$val = str_replace( array("\r\n", "\n","\r"), '<br />', $val );
ou
$val = preg_replace( "#\r\n|\n|\r#", '<br />', $val );
Para aqueles que querem uma resposta que não depende de nl2br()
:
$newList = ereg_replace( "\n",'|', $_POST['theTextareaContents']);
ou (neste caso):
$newList = ereg_replace( "\n",'<br/>', $_POST['theTextareaContents']);
PHP Side: de corda Textarea para string PHP
$newList = ereg_replace( "\n",'|', $_POST['theTextareaContents']);
PHP Side: PHP seqüência de volta para string TextArea:
$list = str_replace('|', ' ', $r['db_field_name']);