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扩展编写点滴 技巧收集
Mar 09 PHP
php中配置文件操作 如config.php文件的读取修改等操作
Jul 07 PHP
PHP面向对象教程之自定义类
Jun 10 PHP
PHP导出Excel实例讲解
Jan 24 PHP
Zend Framework教程之响应对象的封装Zend_Controller_Response实例详解
Mar 07 PHP
PHP购物车类Cart.class.php定义与用法示例
Jul 20 PHP
php 伪造HTTP_REFERER页面URL来源的三种方法
Sep 22 PHP
Zend Framework数据库操作技巧总结
Feb 18 PHP
php实现的统计字数函数定义与使用示例
Jul 26 PHP
Laravel框架实现的批量删除功能示例
Jan 16 PHP
Laravel 创建可以传递参数 Console服务的例子
Oct 14 PHP
Yii 实现数据加密和解密
Mar 09 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
Linux下CoreSeek及PHP扩展模块的安装
2012/09/23 PHP
PHP JSON出错:Cannot use object of type stdClass as array解决方法
2014/08/16 PHP
ThinkPHP中redirect用法分析
2014/12/05 PHP
php通过session防url攻击方法
2014/12/10 PHP
Symfony2创建页面实例详解
2016/03/18 PHP
PHP将页面中点击数量高的链接进行高亮显示的方法
2016/05/30 PHP
TNC vs BOOM BO3 第一场2.13
2021/03/10 DOTA
jquery zTree异步加载简单实例分享
2013/02/05 Javascript
js作用域及作用域链概念理解及使用
2013/04/15 Javascript
js兼容的placeholder属性详解
2013/08/18 Javascript
利用jQuary实现文字浮动提示效果示例代码
2013/12/26 Javascript
Js为表单动态添加节点内容的方法
2015/02/10 Javascript
jquery实现的简单二级菜单效果代码
2015/09/22 Javascript
JS实现模拟百度搜索“2012世界末日”网页地震撕裂效果代码
2015/10/31 Javascript
js实现手机拍照上传功能
2017/01/17 Javascript
浅谈JavaScript中的apply/call/bind和this的使用
2017/02/26 Javascript
基于Cookie常用操作以及属性介绍
2017/09/07 Javascript
AngularJS 教程及实例代码
2017/10/23 Javascript
JS实现table表格固定表头且表头随横向滚动而滚动
2017/10/26 Javascript
three.js实现3D模型展示的示例代码
2017/12/31 Javascript
浅谈React的最大亮点之虚拟DOM
2018/05/29 Javascript
JS加密插件CryptoJS实现的DES加密示例
2018/08/16 Javascript
微信小程序出现wx.getLocation再次授权问题的解决方法分析
2019/01/16 Javascript
vue组件创建的三种方式小结
2020/02/03 Javascript
vue-quill-editor的使用及个性化定制操作
2020/08/04 Javascript
K-近邻算法的python实现代码分享
2017/12/09 Python
Django-Rest-Framework 权限管理源码浅析(小结)
2018/11/12 Python
浅谈Django+Gunicorn+Nginx部署之路
2019/09/11 Python
麦德龙官方海外旗舰店:德国麦德龙超市
2017/12/23 全球购物
美国领先的医疗警报服务:Philips Lifeline
2018/03/12 全球购物
SmartBuyGlasses意大利:购买太阳镜、眼镜和隐形眼镜
2018/11/20 全球购物
教师个人查摆剖析材料
2014/10/14 职场文书
融资合作协议书范本
2014/10/17 职场文书
2015中秋节慰问信范文
2015/03/23 职场文书
教育教学工作反思
2016/02/24 职场文书
使用pandas生成/读取csv文件的方法实例
2021/07/09 Python