Мой код для входного 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>
) и функций PHP: <html> <body> Welcome <?php $a = nl2br(str_replace(' ', ' ', $_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.