Мой код для входного 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.