background image

会多出一个额外的 br 标签,该标签将会以文本的形式显示出来,这是因为由于本身的数
据包含换行符 rn【通过 textarea 键入 enter 键产生】,当你使用 nl2br 后每一行的前面又
多一个 br 标签并且被转义为文本显示;后者则是正确的,输出数据时你不再需要使用
nl2br 函数,并且数据格式跟你输入时一模一样,但是这不包括 textarea。
当我们更新数据并且把数据显示在 textarea 中时,会发现它并不是我们输入时候的样子,
而是多出一个 br 字符。不管你使用的是前者还是后者,为什么?因为 nl2br 函数的作用
就是在每一行的开始插入 br 或者 br ,而我们通过 textarea 输入的数据在向服务器发送
时就已经包含了换行符 rn,比如你从 textarea 输入的数据为:
1234
456
那么 php 脚本接收后,它的实际代码是 1234rn456,当你对它使用 nl2br 函数后,它
会变成 1234br  rn456。这时候你再把数据从数据库中取出来放进 textarea,当然就会
多出一个 br ,textarea 不会直接把 br 解析成换行,而是直接显示,这显然给我们的更
新带来了不便,影响我们更新后保持数据的原始模样。
因此,站长的建议是,不要在数据插入的同时使用 nl2br 函数进行换行处理。
我们应该遵循如下步骤:
1 、 插 入 数 据 前 使 用 htmlspecialchar 函 数 进 行 转 义 【 同 时 必 须 使 用
mysql_real_escape_string 函数转义单引号和双引号】
2、读取数据时使用 nl2br 函数处理换行
或者
1、插入数居前不做任何处理【但是必须使用 mysql_real_escape_string 函数转义单引号
和双引号】
2、读取数据时使用 nl2br(htmlspecialchars($str))转义数据并且处理换行