sql >> Databasteknik >  >> RDS >> Mysql

Ersätter \r\n med PHP

Det största problemet du har med alla varianter du har provat är att både \n och \r är escape-tecken som endast escapes när du använder dem i en sträng med dubbla citattecken .

I PHP är det stor skillnad mellan '\r\n' och "\r\n" . Notera enkla citattecken i det första och dubbla citattecken i det andra.

Så:'\r\n' kommer att resultera i en sträng med fyra tecken som innehåller ett snedstreck, ett 'r', ett annat snedstreck och ett 'n', medan "\r\n" kommer att innehålla två tecken, de är de nya raden och vagnreturtecknen.

Så det direkta svaret på din fråga är att du måste använda det andra av exemplen du gav i frågan, men med dubbla citattecken istället för enkla citattecken:

$text = str_replace("\r\n",'', $text);

Det är värt att påpeka att detta tar bort alla nya rader från ingången och ersätt dem med ingenting. Om det finns mer än en ny rad i inmatningen kommer alla att tas bort. Utan att veta mer om din ansökan vet jag inte om det är detta du vill ha, men här är några tankar:

  • Om du bara vill ta bort tomma rader (och annat blanksteg) från änden av inmatningssträngen kan du använda trim() funktion istället.

  • Om du vill behålla formateringen för utmatning till HTML, använd nl2br() funktionen hjälper dig. Om du vill skriva ut till HTML utan formatering behöver du kanske inte ta bort dem, eftersom webbläsaren inte renderar radbrytningar från \n tecken.

  • Om du ersätter nya rader med ingenting, enligt ditt exempel, kommer det sista ordet på den första raden nu att köras direkt in i det första ordet på den andra raden, och så vidare. Du kanske föredrar att ersätta dem med ett blanksteg snarare än ingenting.

  • Det är möjligt att användare kan skicka in inmatningen med endast \n utan den matchande \r , eller vice versa (detta kan bero på deras operativsystem eller webbläsare, eller ett avsiktligt hack eller ett antal andra orsaker). Om du vill ersätta alla instanser av båda dessa karaktärer, skulle ett mer tillförlitligt sätt att göra det vara att ersätta dem individuellt, snarare än att förlita sig på att de står bredvid varandra. str_replace() låter dig göra detta genom att ange dem i en array. Du kan också använda strtr() eller preg_replace() för att uppnå samma mål.

Hoppas det hjälper.



  1. Introduktion till ER-datamodellen

  2. Ställ in Postgresql Schema Path permanent

  3. Hur kan jag använda Entity Framework på en objektgraf över ett djup av 2 med MySQL Connector / NET?

  4. Fjärrstyrda mySQL-anslutningar kan inte ansluta till MySQL 4.1+ med det gamla osäkra autentiseringsfelet från XAMPP