Краткий ответ:
// double quotes are *very* important, or chars are not interpreted
$text_from_db=str_replace("\\r","\r",str_replace("\\n","\n",$text_from_db));
Длинный ответ
Довольно просто, но сложно.
Вы пишете текстовую область и нажимаете клавишу «return», там помещается \ r \ n (в системах Windows) с косыми чертами, которые экранируют буквы «r» и «n», повышая их особое значение возврата каретки и перевода строки.
Вы на самом деле не можете видеть их, потому что они "не для печати" символов.
Сам символ косой черты (0x1B) невидим, то есть один косая черта является «непечатным» символом, чтобы сделать его видимым, необходимо «преобразовать» его в печатный символ косой черты (0x5C) и добиться того, чтобы удвоить Это "\\".
Теперь вернемся к вопросу: если вы можете прочитать косую черту, вероятно, это потому, что косая черта - это не 0x1B, а 0x5C, так что «n» и «r» теряют свое особое значение, и вы получаете их как простые строки.
Код, который я разместил, выполняет это преобразование, преобразуя строку «[0x5C] n» в символ «[0x1B]».
Примечания
Надеюсь, это поможет, это помогло мне. ВАЖНО: это не нормально, что текст, который приходит из БД, имеет эту проблему, если он был сохранен правильно. Я предлагаю сделать тройную проверку вставки и извлечения, потому что (учитывая проблему) вы могли бы где-нибудь дважды применить кавычку.