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数组函数序列之array_unique() - 去除数组中重复的元素值
Oct 29 PHP
php FLEA中二叉树数组的遍历输出
Sep 26 PHP
解析PHP的session过期设置
Jun 29 PHP
从PHP $_SERVER相关参数判断是否支持Rewrite模块
Sep 26 PHP
php socket实现的聊天室代码分享
Aug 16 PHP
Zend Guard使用指南及问题处理
Jan 07 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
Jan 22 PHP
laravel5创建service provider和facade的方法详解
Jul 26 PHP
ecshop适应在PHP7的修改方法解决报错的实现
Nov 01 PHP
PHP正则表达式匹配替换与分割功能实例浅析
Feb 04 PHP
PHP实现的下载远程文件类定义与用法示例
Jul 05 PHP
PHP中通过getopt解析GNU C风格命令行选项
Nov 18 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
ThinkPHP CURD方法之order方法详解
2014/06/18 PHP
ThinkPHP连接Oracle数据库
2016/04/22 PHP
详解CSS样式中的 !important * _ 符号
2021/03/09 HTML / CSS
取得父标签
2006/11/14 Javascript
js使用eval解析json(js中使用json)
2014/01/17 Javascript
JQuery异步加载无限下拉框级联功能实现示例
2014/02/19 Javascript
javascript写的异步加载js文件函数(支持数组传参)
2014/06/07 Javascript
jquery实现可旋转可拖拽的文字效果代码
2016/01/27 Javascript
JS组件Bootstrap实现下拉菜单效果代码
2016/04/26 Javascript
JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】
2016/05/10 Javascript
BootStrap中Datetimepicker和uploadify插件应用实例小结
2016/05/26 Javascript
JavaScript实现的浏览器下载文件的方法
2017/08/09 Javascript
Vue.js2.0中的变化小结
2017/10/24 Javascript
iview tabs 顶部导航栏和模块切换栏的示例代码
2019/03/04 Javascript
如何实现小程序tab栏下划线动画效果
2019/05/18 Javascript
JavaScript数组去重实现方法小结
2020/01/17 Javascript
mpvue网易云短信接口实现小程序短信登录的示例代码
2020/04/03 Javascript
[05:35]DOTA2英雄梦之声_第13期_拉比克
2014/06/21 DOTA
[02:04]2014DOTA2国际邀请赛 DK一个时代的落幕
2014/07/21 DOTA
解决Mac下首次安装pycharm无project interpreter的问题
2018/10/29 Python
python实现Flappy Bird源码
2018/12/24 Python
python多线程同步之文件读写控制
2021/02/25 Python
python利用tkinter实现图片格式转换的示例
2020/09/28 Python
Pycharm快捷键配置详细整理
2020/10/13 Python
HTML5+css3:3D旋转木马效果相册
2017/01/03 HTML / CSS
Canvas 帧动画吃苹果小游戏
2020/08/05 HTML / CSS
Vivo俄罗斯官方在线商店:中国智能手机品牌
2019/10/04 全球购物
Jones New York官网:美国女装品牌,受白领女性欢迎
2019/11/26 全球购物
Sisley法国希思黎美国官方网站:享誉全球的奢华植物美容品牌
2020/06/27 全球购物
货代行业个人求职简历的自我评价
2013/10/22 职场文书
幼儿园课题方案
2014/06/09 职场文书
刑事申诉状范文
2015/05/20 职场文书
2015年度企业工作总结
2015/05/21 职场文书
MongoDB安装使用并实现Python操作数据库
2021/06/28 MongoDB
Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写
2021/08/02 MySQL
SpringBoot深入分析讲解监听器模式下
2022/07/15 Java/Android