显示格式文本
我有一个cms,我的页面管理员登录和发布各种新闻。显示格式文本
页面是希腊语,所以我使用utf-8编码。
他们在textarea中编写他们的新闻/消息/任何内容,当他们发布后,下面的php脚本准备文本,以便它可以存储在mysql数据库中。
$text = $_POST['text'];
$text = htmlentities($text, $quote_style = null, $charset = "UTF-8", $double_encode = null);
$text = mysql_real_escape_string($text);
然后,当用户进入页面,我从数据库读取文本,我包括whick看起来像这样一个视图文件:
<p><?php echo $text; ?></p>
但是,当文本显示,它看起来像一块文字,没有换行。
我能做些什么来显示文章的完整内容?
我使用htmlentities的原因是我并不真正希望在网站上发布新闻的人有能力发布实际的html代码。如果这不是一个好主意,请告诉我。
我也尝试使用:
$text = $row['text'];
$text = html_entity_decode($text, $quote_style = null, $charset = "UTF-8");
调用视图来显示文本之前,但没有运气那里。
输出的文本是这样的:
<div><?php echo nl2br($text); ?></div>
nl2br - Inserts HTML line breaks before all newlines in a string
尝试添加nl2br电话。
$text = $_POST['text'];
$text = htmlentities($text, null, "UTF-8", null);
$text = nl2br($text);
$text = mysql_real_escape_string($text);
必须ヶ辆之后做的,因为它可以打破你实际的文本改变“<”和“>”来的entites:
</>
使用,而不是<p>
标签<pre>
标签。
这也会在大多数浏览器中默认地改变外观(这意味着他将不得不使用css重新格式化文本),并且根据上下文,它可能在语义方面不正确。 – Connum 2012-01-13 13:40:55
$text = $_POST['text'];
$text = mysql_real_escape_string($text);
...save into database
$text = htmlentities($text, $quote_style = null, $charset = "UTF-8", $double_encode = null);
... show in view
这是你的实际代码?
$text = htmlentities($text, $quote_style = null, $charset = "UTF-8", $double_encode = null);
有没有必要指定要定义什么参数,这将有利于保留选项为默认值,像这样:
htmlentities($text, ENT_COMPAT | ENT_HTML401, 'UTF-8');
如果你想换行工作在输入到textarea后,您还需要拨打nl2br将新行转换为HTML换行符。这必须您的来电后需做ヶ辆,像这样:
$text = nl2br(htmlentities($_POST['text'], ENT_COMPAT | ENT_HTML401, 'UTF-8'));
$text = mysql_real_escape_string($text);
他的调用工作,因为赋值运算符返回分配的值。它不是这样做的正确方法,但有时它可能很有用但很混乱。如:**电话($ a = 1234); if($ a == 1234){echo“i'm here”; } **这将1234传递给“调用”函数,并输入“if”如果我没有错。 – WoLfulus 2012-01-13 13:41:37
@WoLfulus好点,在PHP破碎的日子里回想起来。但即便如此,忽略默认标志也不是好事。更新。编辑:是的,你没有错,var_dump(($ a ='c'));产生(字符串)'c'。 – 2012-01-13 13:44:01
我的edtor(bluefish)函数将所有传递给它们的变量预先键入为NULL。我只是没有改变价值。我将搜索htmlentities文档中提到的语法。 – ppp 2012-01-13 13:52:02
在写入数据库之前替换换行符是一个坏主意。如果你想编辑那个文本,你需要在输出到textarea之前替换'
'。 – Corubba 2012-01-13 13:45:38
@BloodyWorld你说得对。 – WoLfulus 2012-01-13 13:55:48