我正在创建一个post_blog.php
文件,用户将在其中逐个输入所有字段,例如post_title
,post_author
等。
当用户编写包含许多段落的post_text时,我通过在php中使用post方法获取该文本,它以纯文本形式显示所有值。它不包含任何段落等。
这是代码:
<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 .
答案 0 :(得分:1)
当用户按Enter键时,在字符串中插入但在html中不显示换行符\n
。您应该将其转换为<br>
才能显示为html。 str_replace()
可以用字符串替换。
$newStr = str_replace("\n", "<br>", $str)
您还可以使用本机函数nl2br()
,在注释中提到的@VictorFedorenko中,在字符串的所有换行符之前插入HTML换行符
$newStr = nl2br($str)
答案 1 :(得分:0)
您的问题不在php中;您的问题是HTML不接受空格(换行符,空格等)并将其显示为一个空格。有一些解决方案:
使用<pre>
标签,它按原样显示文本:
<?php
...
echo '<pre>' . $post_text = $_POST['post_text'] . '</pre>';
使用CSS white-space: pre;
定义,该定义与<pre>
标记完全一样,不同之处在于它可以应用于任何元素,并且不能设置<pre>
标记的样式:
<?php
...
echo '<div style="white-space: pre;">' . $post_text = $_POST['post_text'] . '</div>';
请参见MDN Docs about CSS' white-space
declaration。
最后一种解决方案是用<br>
标签替换任何换行符,并用
替换空格:
<?php
...
echo $post_text = str_replace(' ', ' ', str_replace('\n', '<br>', $_POST['post_text']));