Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zastąpienie \r\n PHP

Główny problem ze wszystkimi wypróbowanymi odmianami polega na tym, że zarówno \n i \r są znakami ucieczki, które są zamieniane tylko wtedy, gdy używasz ich w łańcuchu z podwójnym cudzysłowem .

W PHP istnieje duża różnica między '\r\n' i "\r\n" . Zwróć uwagę na pojedyncze cudzysłowy w pierwszym i podwójne cudzysłowy w drugim.

A więc:'\r\n' da w wyniku czteroznakowy ciąg zawierający ukośnik, „r”, inny ukośnik i „n”, podczas gdy "\r\n" będzie zawierać dwa znaki, które są znakami nowej linii i powrotu karetki.

Tak więc bezpośrednią odpowiedzią na twoje pytanie jest to, że musisz użyć drugiego z przykładów podanych w pytaniu, ale z podwójnymi cudzysłowami zamiast pojedynczych:

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

Warto zaznaczyć, że spowoduje to usunięcie wszystkich nowe linie z wejścia i zastąp je niczym. Jeśli na wejściu pojawi się więcej niż jedna nowa linia, wszystkie zostaną usunięte. Nie wiedząc więcej o Twojej aplikacji, nie wiem, czy tego chcesz, ale oto kilka przemyśleń:

  • Jeśli chcesz tylko usunąć puste wiersze (i inne białe znaki) z końca ciągu wejściowego, możesz użyć trim() zamiast tego.

  • Jeśli chcesz zachować formatowanie danych wyjściowych do HTML, to nl2br() funkcja pomoże. Jeśli chcesz drukować w formacie HTML bez formatowania, możesz nie musieć ich usuwać, ponieważ przeglądarka nie renderuje podziałów wierszy ze znaków \n.

  • Jeśli zastąpisz nowe wiersze niczym, jak na twoim przykładzie, ostatnie słowo pierwszego wiersza będzie teraz przechodzić bezpośrednio do pierwszego słowa drugiego wiersza i tak dalej. Być może wolisz zastąpić je spacją, a nie niczym.

  • Możliwe, że użytkownicy mogą przesyłać dane wejściowe tylko za pomocą \n bez pasującego \r lub odwrotnie (może to być spowodowane ich systemem operacyjnym, przeglądarką, celowym włamaniem lub kilkoma innymi przyczynami). Jeśli chcesz zastąpić wszystkie w przypadku obu tych postaci, bardziej niezawodnym sposobem na to byłoby zastąpienie ich pojedynczo, zamiast polegać na tym, że znajdują się obok siebie. str_replace() pozwala to zrobić, określając je w tablicy. Możesz także użyć strtr() lub preg_replace() osiągnąć ten sam cel.

Mam nadzieję, że to pomoże.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. STWÓRZ TABELĘ JAK A1 jako A2

  2. Wydajne przechowywanie przesłanych przez użytkownika obrazów w systemie plików

  3. PHP do przechowywania obrazów w MySQL czy nie?

  4. Wyszukiwanie geograficzne MYSQL z wydajnością na odległość

  5. mysql zapytanie o datę, między dwoma polami daty