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 相关文章推荐
让你同时上传 1000 个文件 (一)
Oct 09 PHP
Apache2 httpd.conf 中文版
Nov 17 PHP
如何写php程序?
Dec 08 PHP
Notice: Undefined index: page in E:\PHP\test.php on line 14
Nov 02 PHP
php实现memcache缓存示例讲解
Dec 04 PHP
php使用strtotime和date函数判断日期是否有效代码分享
Dec 25 PHP
php解析字符串里所有URL地址的方法
Apr 03 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
Dec 02 PHP
java模拟PHP的pack和unpack类
Apr 13 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
Jul 22 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
Jan 29 PHP
php实现银联商务公众号+服务窗支付的示例代码
Oct 12 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
php自定义函数截取汉字长度
2014/05/15 PHP
PHP 常用的header头部定义汇总
2015/06/19 PHP
使用Zttp简化Guzzle 调用
2017/07/02 PHP
JS数学函数Exp使用说明
2012/08/09 Javascript
jquery实现控制表格行高亮实例
2013/06/05 Javascript
javascript中的绑定与解绑函数应用示例
2013/06/24 Javascript
对之前写的jquery分页做下升级
2014/06/19 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
2014/10/17 Javascript
实现placeholder效果的方案汇总
2015/06/11 Javascript
Javascript刷新窗口方法小结
2015/10/21 Javascript
JQuery组件基于Bootstrap的DropDownList(完整版)
2016/07/05 Javascript
Node.js学习入门
2017/01/03 Javascript
详解vue的数据binding绑定原理
2017/04/12 Javascript
bootstrap是什么_动力节点Java学院整理
2017/07/14 Javascript
jQuery中.attr()和.data()的区别分析
2017/09/03 jQuery
JS实现的缓冲运动效果示例
2018/04/30 Javascript
浅谈vue 组件中的setInterval方法和window的不同
2020/07/30 Javascript
html+vue.js 实现漂亮分页功能可兼容IE
2020/11/07 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
[48:21]林俊杰圣堂刺客超神杀戮秀
2014/10/29 DOTA
[44:33]EG vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python学习资料
2007/02/08 Python
python进程管理工具supervisor使用实例
2014/09/17 Python
Python从文件中读取数据的方法讲解
2019/02/14 Python
Python实现打印实心和空心菱形
2019/11/23 Python
基于python纯函数实现井字棋游戏
2020/05/27 Python
创意爱尔兰礼物:Creative Irish Gifts
2020/01/29 全球购物
泰国时尚电商:POMELO Fashion
2020/03/11 全球购物
财务部总监岗位职责
2014/03/12 职场文书
2014年仓库管理员工作总结
2014/11/18 职场文书
升职感谢信
2015/01/22 职场文书
植树节新闻稿
2015/07/17 职场文书
2016年员工政治思想表现评语
2015/12/02 职场文书
2019暑期安全倡议书!
2019/06/27 职场文书
网络安全倡议书(3篇)
2019/09/18 职场文书
python中如何对多变量连续赋值
2021/06/03 Python