У меня есть следующий текст, для которого я хотел бы добавить тэг для каждого абзаца. А также удалите все разрывы строк. Как мне это сделать в PHP? Благодарю.
Так что это –
This is some text for which I would like to remove the line breaks. And I would also like to place a b> tag after every paragraph. Here is one more paragraph.
Стало бы это –
This is some text for which I would like to remove the line breaks.<br/> And I would also like to place a br tag after every paragraph. <br> Here is one more paragraph.
ПРИМЕЧАНИЕ. Игнорируйте выделение любых букв.
Это тоже должно работать: (хотя и упрощенно)
$string = str_replace("\n\n", "<br />", $string); $string = str_replace("\n", "", $string);
Он был протестирован.
Ну, кажется, вы считаете разделитель абзаца, пустую строку. Таким образом, самое простое решение выглядит так:
$text = str_replace( "\r", "", $text ); // this removes the unwanted \r $lines = explode( "\n", $text ); // split text into lines. $textResult = ""; foreach( $lines AS $line ) { if( trim( $line ) == "" ) $textResult .= "<br />"; $textResult .= " " . $line; }
Я думаю, что это решает вашу проблему. $textResult
будет иметь результат
Либо я что-то пропустил, либо никто не дал самое простое решение – встроенная функция nl2br
:
echo nl2br($string);
Помните только, что если вы используете чистую строку (а не переменную) как аргумент nl2br
, вы должны использовать двойные кавычки, иначе ваши управляющие символы, такие как \n
или \r
, не будут расширены.
echo str_replace(array("\n\n", "\n"), array("<br/>", " "), $subject);
Вышеупомянутое заменяет двойные символы новой строки тегом <br/>
и любыми оставленными одними символами новой строки в пространстве (чтобы избежать слов, изначально только разделенных новой строкой, пробегающих друг друга).
У вас возникнет необходимость в обслуживании линий CRLF (окна). что слегка (хотя и не резко) изменит подход.
Это делает это для меня
$string = ereg_replace( "\n", "<br/>", $string);