PHP中动态HTML的输出技术


Posted in PHP onOctober 09, 2006

你可以在php程序中的任何地方使用
echo "hello world!";
来输出你想输出的内容。

不过你将遇到以下麻烦:

1 -
当你试图在hello和world之间加入两个(或两个以上)空格,
你使用:
echo "hello world!";
你得到的输出还是一个空格,或者你在行首加入一个空格,
你的空格也将被忽略。

2 -
更糟的是输出用户输入的内容时,有心或无意的用户输入将
使你的输出变的一团糟,甚至给其他用户带来麻烦。
比如:

<form action="output.php">
<textarea name="in_txt">
</textarea>
<br>
<input type="submit">
</form>

如果用户输入中有不止一行的内容,那么你如果简单地
echo $in_txt;
用户的换行将被忽略。

3 -
还是上面的例子,大部分情况我们不希望用户输入html
代码,因为你不知道用户会输入什么。
用户甚至可以写一段代码使你网站所有的用户死机。
当然你不希望那样,但是你如果简单地
echo $in_txt;
就不可能避免。

解决方法:
对于1,可以使用ereg_replace(" {2}","$nbsp; ",$in_txt)
两个在一起的空格将变成两个空格的转义符($nbsp)。

对于2,nl2br($in_txt)是最好的选择,这样所以的换行就换成
"<br>"了。

对于3,安全地显示用户输入的html代码,php中也有专门的函数。
htmlspecialchars($in_txt)就可以了。

另外,如果$in_txt是从mysql数据库中提出的,那么他在以前插入时
一定要使用addslashes(),相应的,取出时就一定要stripslashes()。

总结:
如果$in_txt是用户输入的文本,一般可以这样输出:
echo ereg_replace(" {2}","  ",nl2br(htmlspecialchars(stripslashes($in_txt))));

PHP 相关文章推荐
一些关于PHP的知识
Nov 17 PHP
基于PHP静态类的原罪详解
May 06 PHP
php 字符串中的\n换行符无效、不能换行的解决方法
Apr 02 PHP
php绘图之在图片上写中文和英文的方法
Jan 24 PHP
8个必备的PHP功能开发
Oct 02 PHP
深入理解PHP中的empty和isset函数
May 26 PHP
PHP文件下载实例代码浅析
Aug 17 PHP
PHP hebrev()函数用法讲解
Feb 21 PHP
laravel异步监控定时调度器实例详解
Jun 21 PHP
tp5框架无刷新分页实现方法分析
Sep 26 PHP
TP5框架实现一次选择多张图片并预览的方法示例
Apr 04 PHP
PHP获取学生成绩的方法
Nov 17 PHP
也谈截取首页新闻 - 范例
Oct 09 #PHP
PHP4实际应用经验篇(6)
Oct 09 #PHP
PHP4实际应用经验篇(7)
Oct 09 #PHP
PHP4实际应用经验篇(9)
Oct 09 #PHP
PHP4实际应用经验篇(8)
Oct 09 #PHP
一个简单的MySQL数据浏览器
Oct 09 #PHP
PHP生成便于打印的网页
Oct 09 #PHP
You might like
CodeIgniter php mvc框架 中国网站
2008/05/26 PHP
linux php mysql数据库备份实现代码
2009/03/10 PHP
php使用imagecopymerge()函数创建半透明水印
2018/01/25 PHP
javascript document.images实例
2008/05/27 Javascript
js操作iframe的一些方法介绍
2013/06/25 Javascript
jQuery ajax dataType值为text json探索分享
2013/09/23 Javascript
两种方法实现在HTML页面加载完毕后运行某个js
2014/06/16 Javascript
原生js和jQuery随意改变div属性style的名称和值
2014/10/22 Javascript
js获取图片宽高的方法
2015/11/25 Javascript
Angular模板表单校验方法详解
2017/08/11 Javascript
Bootstrap图片轮播效果详解
2017/10/17 Javascript
vue2.0 自定义 饼状图 (Echarts)组件的方法
2018/03/02 Javascript
详解Vue CLI3配置之filenameHashing使用和源码设计使用和源码设计
2018/08/31 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧滑动,右侧不动)
2019/01/23 Javascript
Vue中使用create-keyframe-animation与动画钩子完成复杂动画
2019/04/09 Javascript
JS中数据结构与算法---排序算法(Sort Algorithm)实例详解
2019/06/17 Javascript
JavaScript实现文件下载并重命名代码实例
2019/12/12 Javascript
[01:19:54]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#1Alliance VS EHOME
2016/03/03 DOTA
[53:03]Optic vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python刷投票的脚本实现代码
2014/11/08 Python
使用python编写简单的小程序编译成exe跑在win10上
2018/01/15 Python
Python实现针对json中某个关键字段进行排序操作示例
2018/12/25 Python
Python 项目转化为so文件实例
2019/12/23 Python
python如何进行矩阵运算
2020/06/05 Python
matplotlib对象拾取事件处理的实现
2021/01/14 Python
英国最大的宠物商店:Pets at Home
2019/04/17 全球购物
小学教育毕业生自荐信
2013/11/18 职场文书
公务员平时考核实施方案
2014/03/11 职场文书
个人廉洁自律承诺书
2014/03/27 职场文书
诚实守信演讲稿
2014/09/01 职场文书
党的群众路线教育实践活动个人整改方案
2014/09/21 职场文书
四风查摆问题及整改措施
2014/10/10 职场文书
会计人员岗位职责
2015/02/03 职场文书
任命通知范文
2015/04/21 职场文书
给老婆的检讨书(搞笑版)
2015/05/06 职场文书
maven依赖的version声明控制方式
2022/01/18 Java/Android