Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Substituindo \r\n por PHP


O principal problema que você tem com todas as variações que você tentou é que tanto \n e \r são caracteres de escape que somente escapam quando você os usa em uma string com aspas duplas .

Em PHP, há uma grande diferença entre '\r\n' e "\r\n" . Observe as aspas simples na primeira e aspas duplas na segunda.

Então:'\r\n' resultará em uma cadeia de quatro caracteres contendo uma barra, um 'r', outra barra e um 'n', enquanto "\r\n" conterá dois caracteres, sendo eles a nova linha e os caracteres de retorno de carro.

Portanto, a resposta direta à sua pergunta é que você precisa usar o segundo dos exemplos que você deu na pergunta, mas com aspas duplas em vez de aspas simples:
$text = str_replace("\r\n",'', $text);

Vale ressaltar que isso removerá todos novas linhas da entrada e substitua-as por nada. Se houver mais de uma nova linha na entrada, todas serão removidas. Sem saber mais sobre sua aplicação, não sei se é isso que você quer, mas aqui estão alguns pensamentos:

  • Se você deseja remover apenas linhas em branco (e outros espaços em branco) do final da string de entrada, você pode usar o trim() função em vez disso.

  • Se você deseja manter a formatação para saída em HTML, então o nl2br() função irá ajudá-lo. Se você quiser enviar para HTML sem a formatação, talvez não seja necessário removê-los, pois o navegador não renderizará quebras de linha de caracteres \n.

  • Se você substituir novas linhas por nada, conforme seu exemplo, a última palavra da primeira linha agora será executada diretamente na primeira palavra da segunda linha e assim por diante. Você pode preferir substituí-los por um caractere de espaço em vez de nada.

  • É possível que os usuários enviem a entrada apenas com \n sem o \r correspondente , ou vice-versa (isso pode ser devido ao seu sistema operacional ou navegador, ou um hack deliberado ou vários outros motivos). Se você deseja substituir todos instâncias desses dois caracteres, uma maneira mais confiável de fazer isso seria substituí-los individualmente, em vez de confiar que eles estão próximos um do outro. str_replace() permite que você faça isso especificando-os em uma matriz. Você também pode usar strtr() ou preg_replace() para atingir o mesmo objetivo.

Espero que ajude.