PHP не показывает разрыв строки в значении textarea в эхо - PullRequest
0 голосов
/ 23 сентября 2018

Я создаю post_blog.php файл, в котором пользователь будет вводить все поля одно за другим, например post_title, post_author и т. Д.

Когда пользователь пишет post_text, который содержит много абзацев, и я получаю этот текст поиспользуя метод post в php, он отображает все значения в виде обычного текста.он не содержит абзацев и т. д.

Вот код:

<textarea rows="400" cols="100" name="post_text">
Enter post text here .. upto 5000 characters . 
</textarea>

в php:

if()....

echo        $post_text = $_POST['post_text'];

Демонстрационный ввод в post_text:

Enter post text here 
.. upto 
5000 
characters . 

ВЫХОД:

Enter post text here .. upto 5000 characters . 

Ожидаемый ВЫХОД:

Enter post text here 
.. upto 
5000 
characters .

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Ваша проблема не в php;Ваша проблема в том, что HTML не принимает пробелы (разрывы строк, пробелы и т. Д.) И отображает их как один пробел.Есть несколько решений:

Используйте тег <pre>, который показывает текст как есть:

<code><?php

...
echo '<pre>' . $post_text = $_POST['post_text'] . '
';

Используйте определение CSS white-space: pre;, которое очень похоже на тег <pre>, за исключением того, что оно может быть применено к любому элементу, и вы не можете стилизовать тег <pre>:

<?php

...
echo '<div style="white-space: pre;">' . $post_text = $_POST['post_text'] . '</div>';

См. Документы MDN о CSS 'white-space объявление .

Последнее решение заключается в замене любого переноса строки тегом <br> и любого пробела на &nbsp;:

<?php

...
echo $post_text = str_replace(' ', '&nbsp;', str_replace('\n', '<br>', $_POST['post_text']));
0 голосов
/ 23 сентября 2018

Когда пользователь нажимает Enter, разрыв строки \n вставляется в строку, но в html не отображается.Вы должны преобразовать его в <br> для отображения в html.str_replace() может заменить его в строке.

$newStr = str_replace("\n", "<br>", $str)

Также вы можете использовать встроенную функцию nl2br(), которая вставляет разрывы строки HTML перед всеми новыми строками в строке, как @VictorFedorenko, упомянутый в комментарии.

$newStr = nl2br($str)
...