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 相关文章推荐
模仿OSO的论坛(五)
Oct 09 PHP
用PHP实现的随机广告显示代码
Jun 14 PHP
PHP命名空间(Namespace)的使用详解
May 04 PHP
PHP基础知识介绍
Sep 17 PHP
php时区转换转换函数
Jan 07 PHP
详解PHP+AJAX无刷新分页实现方法
Nov 03 PHP
PHP中的Trait 特性及作用
Apr 03 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
Apr 04 PHP
PHP批量删除jQuery操作
Jul 23 PHP
实例说明js脚本语言和php脚本语言的区别
Apr 04 PHP
php7 图形用户界面GUI 开发示例
Feb 22 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
Mar 24 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
咖啡历史、消费和行业趋势
2021/03/03 咖啡文化
PHP中3种生成XML文件方法的速度效率比较
2012/10/06 PHP
php设计模式之单例模式实例分析
2015/02/25 PHP
Windows下Apache + PHP SESSION丢失的解决过程全纪录
2015/04/07 PHP
PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
2019/05/06 PHP
laravel config文件配置全局变量的例子
2019/10/13 PHP
jquery下拉select控件操作方法分享(jquery操作select)
2014/03/25 Javascript
jquery实现下拉框功能效果【实例代码】
2016/05/06 Javascript
深入浅析JavaScript函数前面的加号和叹号
2016/07/09 Javascript
JavaScript排序算法动画演示效果的实现方法
2016/10/18 Javascript
微信小程序实战之轮播图(3)
2017/04/17 Javascript
js实现上传并压缩图片效果
2018/01/10 Javascript
vue点击自增和求和的实例代码
2019/11/06 Javascript
node.js 微信开发之定时获取access_token
2020/02/07 Javascript
[56:58]VP vs Optic 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
教大家使用Python SqlAlchemy
2016/02/12 Python
windows下python和pip安装教程
2018/05/25 Python
python实现按长宽比缩放图片
2018/06/07 Python
python字符串常用方法
2018/06/14 Python
深入理解Django自定义信号(signals)
2018/10/15 Python
Python二叉搜索树与双向链表转换算法示例
2019/03/02 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
2020/03/28 Python
使用pytorch 筛选出一定范围的值
2020/06/28 Python
财务部岗位职责
2013/11/19 职场文书
学生实习推荐信范文
2013/11/26 职场文书
大学竞选班长演讲稿
2014/04/24 职场文书
体育运动口号
2014/06/09 职场文书
房屋所有权证明
2014/10/20 职场文书
活动总结书怎么写
2015/05/11 职场文书
电影雷锋观后感
2015/06/10 职场文书
公司老总年会致辞
2015/07/30 职场文书
MySQL分库分表与分区的入门指南
2021/04/22 MySQL
python执行js代码的方法
2021/05/13 Python
Mysql数据库手动及定时备份步骤
2021/11/07 MySQL
「魔导具师妲莉亚永不妥协~从今天开始的自由职人生活~」1、2卷发售宣传CM公开
2022/03/21 日漫
CSS浮动引起的高度塌陷问题
2022/08/05 HTML / CSS