PHP заменяет двойные строки одним разрывом HTML
Я пытаюсь заменить все \n\n на моем сервере тегом <BR>
, чтобы один \n не превратился в <BR>
.
Пример:
Hello,\n\nThis is an\nexample.\n\nThanks!
Переходит к:
Hello,<BR>This is an\nexample,<BR>Thanks!
(обратите внимание, что одиночный \n не был заменен)
Когда я делаю следующее в PHP, это не заменяет две строки разрывом:
$str = str_replace("\n\n", "<br />", $str);
2
2 answers
Ваши \n
на самом деле \r\n
(что означает, что входные данные поступили из операционной системы Windows), я предлагаю вам сначала нормализовать ваши новые строки до стандарта *nix со следующим регулярным выражением:
$str = preg_replace('~\r\n?~', "\n", $str);
Затем ваш исходный фрагмент будет работать (демо):
$str = str_replace("\n\n", '<br />', $str);
Вы также можете просто сделать:
$str = str_replace("\r\n\r\n", '<br />', $str);
Но это не сработало бы, если бы входные данные поступали из Linux или старой Mac OS (которая использует только \r
).
2
Author: Alix Axel, 2012-05-30 23:06:25
Вам нужно дважды экранировать своих персонажей:
Попробуйте:
$str = str_replace("\\n\\n", "<br />", $str);
2
Author: sberry, 2012-05-30 22:53:09