Ваша проблема не в 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>
и любого пробела на
:
<?php
...
echo $post_text = str_replace(' ', ' ', str_replace('\n', '<br>', $_POST['post_text']));