Det største problem du har med alle de varianter du har prøvet er, at både \n
og \r
er escape-tegn, der kun escapes, når du bruger dem i en streng med dobbelte citater .
I PHP er der stor forskel på '\r\n'
og "\r\n"
. Bemærk de enkelte anførselstegn i det første og dobbelte anførselstegn i det andet.
Så:'\r\n'
vil resultere i en streng på fire tegn, der indeholder en skråstreg, en 'r', en anden skråstreg og et 'n', hvorimod "\r\n"
vil indeholde to tegn, de er de nye linje- og vognretur-tegn.
Så det direkte svar på dit spørgsmål er, at du skal bruge det andet af de eksempler, du gav i spørgsmålet, men med dobbelte anførselstegn i stedet for enkelte anførselstegn:
$text = str_replace("\r\n",'', $text);
Det er værd at påpege, at dette vil fjerne alle nye linjer fra input, og erstatte dem med ingenting. Hvis der er mere end én ny linje i inputtet, vil de alle blive fjernet. Uden at vide mere om din ansøgning, ved jeg ikke, om det er det, du ønsker, men her er nogle tanker:
-
Hvis du kun ønsker at fjerne tomme linjer (og andet hvidt mellemrum) fra enden af inputstrengen, kan du bruge
trim()
funktion i stedet for. -
Hvis du vil beholde formateringen til output til HTML, skal du bruge
nl2br()
funktion vil hjælpe dig. Hvis du vil udskrive til HTML uden formatering, behøver du muligvis ikke fjerne dem, da browseren ikke gengiver linjeskift fra \n tegn. -
Hvis du erstatter nye linjer med ingenting, som i dit eksempel, vil det sidste ord i den første linje nu løbe direkte ind i det første ord i den anden linje, og så videre. Du foretrækker måske at erstatte dem med et mellemrumstegn frem for ingenting.
-
Det er muligt, at brugere kun kan indsende input med
\n
uden den matchende\r
, eller omvendt (dette kan skyldes deres OS eller browser, eller et bevidst hack eller en række andre årsager). Hvis du vil erstatte alle tilfælde af begge disse karakterer, ville en mere pålidelig måde at gøre det på være at erstatte dem individuelt i stedet for at stole på, at de er ved siden af hinanden.str_replace()
giver dig mulighed for at gøre dette ved at angive dem i et array. Du kan også brugestrtr()
ellerpreg_replace()
at nå det samme mål.
Håber det hjælper.