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源代码
Oct 09 PHP
Mysql的常用命令
Oct 09 PHP
java EJB 加密与解密原理的一个例子
Jan 11 PHP
用php实现批量查询清除一句话后门的代码
Jan 20 PHP
php输入流php://input使用浅析
Sep 02 PHP
PHP实现文件下载详解
Nov 27 PHP
PHP的cURL库简介及使用示例
Feb 06 PHP
yii2.0使用Plupload实现带缩放功能的多图上传
Dec 22 PHP
[原创]php token使用与验证示例【测试可用】
Aug 30 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
Mar 15 PHP
ThinkPHP框架下微信支付功能总结踩坑笔记
Apr 10 PHP
PHP goto语句用法实例
Aug 06 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
预告映像公开!第1章续篇剧场版动画《Princess Principal Crown Handler》4月10日上映!
2020/03/06 日漫
PHP操作数组相关函数
2011/02/03 PHP
PHP常用的三种设计模式汇总
2016/08/28 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
jQuery学习笔记(1)--用jQuery实现异步通信(用json传值)具体思路
2013/04/08 Javascript
使用原生js封装webapp滑动效果(惯性滑动、滑动回弹)
2014/05/06 Javascript
node.js中的path.isAbsolute方法使用说明
2014/12/08 Javascript
Node.js中child_process实现多进程
2015/02/03 Javascript
javascript日期验证之输入日期大于等于当前日期
2015/12/13 Javascript
JavaScript中的原型继承基础学习教程
2016/05/06 Javascript
基于jquery实现智能表单验证操作
2016/05/09 Javascript
jQuery动态添加可拖动元素完整实例(附demo源码下载)
2016/06/21 Javascript
node.js实现登录注册页面
2017/04/08 Javascript
关于javascript sort()排序你可能忽略的一点理解
2017/07/18 Javascript
微信小程序简单实现form表单获取输入数据功能示例
2017/11/30 Javascript
vue使用技巧及vue项目中遇到的问题
2018/06/04 Javascript
RequireJS用法简单示例
2018/08/20 Javascript
用VueJS写一个Chrome浏览器插件的实现方法
2019/02/27 Javascript
vue实现表单未编辑或未保存离开弹窗提示功能
2020/04/08 Javascript
[02:35]DOTA2超级联赛专访XB 难忘一年九冠称王
2013/06/20 DOTA
[01:27]DOTA2电竞之夜 今夜共饮庆功酒
2014/08/02 DOTA
[55:25]VGJ.T vs Optic Supermajor小组赛D组 BO3 第三场 6.3
2018/06/04 DOTA
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
2013/12/04 Python
简单的编程0基础下Python入门指引
2015/04/01 Python
Python遍历文件夹和读写文件的实现方法
2017/05/10 Python
对python requests的content和text方法的区别详解
2018/10/11 Python
Python之两种模式的生产者消费者模型详解
2018/10/26 Python
django使用xadmin的全局配置详解
2019/11/15 Python
Python 生成一个从0到n个数字的列表4种方法小结
2019/11/28 Python
Python3爬虫mitmproxy的安装步骤
2020/07/29 Python
雷曼兄弟的五金店:Lehman’s Hardware Store
2019/04/10 全球购物
政法大学毕业生自荐信范文
2014/01/01 职场文书
《陈涉世家》教学反思
2014/04/12 职场文书
结婚保证书
2015/01/16 职场文书
企业工会工作总结2015
2015/05/13 职场文书
redis cluster支持pipeline的实现思路
2021/06/23 Redis