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 字符转义 注意事项
May 27 PHP
php继承的一个应用
Sep 06 PHP
Eclipse中php插件安装及Xdebug配置的使用详解
Apr 25 PHP
thinkphp路由规则使用示例详解和伪静态功能实现(apache重写)
Feb 24 PHP
PHP中实现接收多个name相同但Value不相同表单数据实例
Feb 03 PHP
YII Framework框架教程之安全方案详解
Mar 14 PHP
PHP会话操作之cookie用法分析
Sep 28 PHP
PHP实现ASCII码与字符串相互转换的方法
Apr 29 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
Nov 10 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
Sep 04 PHP
浅谈php使用curl模拟多线程发送请求
Mar 08 PHP
tp5框架使用cookie加密算法实现登录功能示例
Feb 10 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
全国FM电台频率大全 - 8 黑龙江省
2020/03/11 无线电
php 显示指定路径下的图片
2009/10/29 PHP
php生成随机密码的三种方法小结
2010/09/04 PHP
php通用防注入程序 推荐
2011/02/26 PHP
Zend Framework教程之模型Model基本规则和使用方法
2016/03/04 PHP
js中查找最近的共有祖先元素的实现代码
2010/12/30 Javascript
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
分享一个用Mootools写的鼠标滑过进度条改变进度值的实现代码
2011/12/12 Javascript
JS中判断null、undefined与NaN的方法
2014/03/24 Javascript
angular.element方法汇总
2015/01/07 Javascript
Jquery 1.9.1源码分析系列(十二)之筛选操作
2015/12/02 Javascript
jquery.serialize() 函数语法及简单实例
2016/07/08 Javascript
AngularJs  Understanding Angular Templates
2016/09/02 Javascript
Reactjs实现通用分页组件的实例代码
2017/01/19 Javascript
使用socket.io实现简单聊天室案例
2018/01/02 Javascript
Vue官网todoMVC示例代码
2018/01/29 Javascript
element ui 对话框el-dialog关闭事件详解
2018/02/26 Javascript
JS替换字符串中指定位置的字符(多种方法)
2020/05/28 Javascript
在Vue中使用mockjs代码实例
2020/11/25 Vue.js
在Python下利用OpenCV来旋转图像的教程
2015/04/16 Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
2018/01/23 Python
python实现指定文件夹下的指定文件移动到指定位置
2018/09/17 Python
python 进程的几种创建方式详解
2019/08/29 Python
python django生成迁移文件的实例
2019/08/31 Python
Python如何使用OS模块调用cmd
2020/02/27 Python
Python中有几个关键字
2020/06/04 Python
python如何爬取动态网站
2020/09/09 Python
行政人事岗位职责
2014/03/17 职场文书
对孩子的寄语
2014/04/09 职场文书
母校寄语大全
2014/04/10 职场文书
2014年学习全国道德模范事迹思想汇报
2014/09/15 职场文书
大学学生个人总结
2015/02/15 职场文书
医生个人年终总结
2015/02/28 职场文书
2015年宣传思想工作总结
2015/05/22 职场文书
Python爬虫实战之爬取京东商品数据并实实现数据可视化
2021/06/07 Python
MySQL提升大量数据查询效率的优化神器
2022/07/07 MySQL