Może się to wydawać oszustwem, ale zapewniam, że tak nie jest - przeszukiwałem zarówno SO, jak i resztę sieci, aby znaleźć odpowiedź na mój problem i ostatecznie znajdowałem te same niewystarczające „rozwiązania” w kółko. Tak czy inaczej, oto jest:
Zapisuję dane wejściowe użytkownika z obszaru tekstowego do bazy danych MySQL (w środowisku WordPress, ale uważam, że nie powinno to mieć znaczenia dla tego problemu). Jest później pobierany z bazy danych i pokazywany administratorom w zapleczu witryny. Problem pojawia się, gdy użytkownicy przesyłają tekst z podziałem wiersza (tj. Naciskają klawisz Enter).
Przykładowy ciąg może wyglądać następująco:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!
Greetings,
Bill
W ciągu nie ma znaków końca wiersza („\ n”, „\ r” itp.).
Używam nl2br()
go do generowania danych wyjściowych HTML, ale to nie wystarczy. Wynik to:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br />
<br />
Greetings,<br />
Bill
Który, o ile rozumiem, jest oczekiwanym nl2br()
rezultatem, ponieważ wstawia tagi i nie ma w pierwszej kolejności zastępować podziałów wierszy?
Jednak format, którego potrzebuję, byłby następujący:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br /><br />Greetings,<br />Bill
Gdyby ciąg zawierał znaki EOL, takie jak „\ n”, uderzyłbym go albo str_replace()
albo preg_replace()
i skończyłbym z tym, ale nie mam pojęcia, którą igłę podać do którejkolwiek z tych funkcji, jeśli nie ma tam żadnych znaków na pierwszym miejscu.
Mogę ręcznie uzyskać dostęp do odpowiedniego pola w bazie danych, naciskać Backspace przy każdym podziale wiersza i to, co chcę później zrobić ze stringiem, działa. Więc wiem, że potrzebuję powyższego formatu.