дополнительные пробелы и новая строка PHP автоматически удаляются TEXTAREA

Мой код для входного php-файла следующий.

<!DOCTYPE html> <html> <body> <form name="input" action="welcome.php" method="post"> Comment: <textarea name="input" rows="5" cols="40"></textarea> <input type="submit" value="Submit"> </form> </body> </html> 

Для выходного кода это следующее.

 <html> <body> Welcome <?php $a=$_POST["input"]; echo $a; ?><br> </body> </html> 

Когда что-либо с дополнительными пробелами и новой строкой вводятся, он автоматически удаляется. Например :

Когда я ввожу:

 abcd cda xyzb 

Выход:

Welcome abcd cda xyzb

Это связано с тем, что новые строковые символы представлены как \r\n , в исходном коде вы увидите новые строки. Пробелы усекаются, если следовать за другим в HTML.

Я предлагаю вам использовать <pre> , который не только сохраняет новые строки (например, php's nl2br() ), но также сохраняет пробелы .

Используя <pre> :

 <html> <body> <pre class="yourStyleForThisPreFormattedText"> Welcome <?php $a = $_POST["input"]; echo $a; ?> </pre> </body> </html> 

Использование специальных символов ( &nbsp; ) и функций PHP:

 <html> <body> Welcome <?php $a = nl2br(str_replace(' ', '&nbsp;', $_POST["input"]), true); echo $a; ?> </body> </html> 

Обратите внимание:

Для HTML4 и HTML5 используйте nl2br($str, true); , для XHTML4 используйте nl2br($str); – разница в выходе: <br> и <br /> . См. http://php.net/nl2br

Для отображения новой строки используйте nl2br()

 <html> <body> Welcome <?php $a = nl2br($_POST["input"]); echo $a; ?><br> </body> </html> 

Вы также можете добавить <pre> чтобы отобразить предварительно отформатированный текст (все пробелы).

+ Изменить

 <textarea name="input" rows="5" cols="40"></textarea> 

В

 <textarea name="input" rows="5" cols="40" wrap="virtual"></textarea> 

Вы также можете использовать wrap: off, hard, soft, physical

Попробуй это…

 Welcome <?php echo htmlentities($_POST['input']); ?> 

htmlentities() преобразует ваш HTML.