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 相关文章推荐
第十四节 命名空间 [14]
Oct 09 PHP
PHP Array交叉表实现代码
Aug 05 PHP
PHPExcel读取Excel文件的实现代码
Dec 06 PHP
php 批量添加多行文本框textarea一行一个
Jun 03 PHP
php中JSON的使用方法
Apr 30 PHP
php自定义hash函数实例
May 05 PHP
PHP 返回13位时间戳的实现代码
May 13 PHP
php使用环形链表解决约瑟夫问题完整示例
Aug 07 PHP
Yii2处理密码加密及验证的方法
May 12 PHP
thinkphp5框架前后端分离项目实现分页功能的方法分析
Oct 08 PHP
PHP高并发和大流量解决方案整理
Dec 24 PHP
阿里云服务器搭建Php+Apache运行环境的详细过程
May 15 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
2020年4月放送!《Princess Connect Re:Dive》制作组 & 角色声优公开!
2020/03/06 日漫
php 在线打包_支持子目录
2008/06/28 PHP
实现PHP框架系列文章(6)mysql数据库方法
2016/03/04 PHP
thinkPHP5.0框架URL访问方法详解
2017/03/18 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
PHP实现简易用户登录系统
2020/07/10 PHP
PHP并发场景的三种解决方案代码实例
2021/02/27 PHP
利用XMLHTTP传递参数在另一页面执行并刷新本页
2006/10/26 Javascript
改变文件域的样式实现思路同时兼容ie、firefox
2013/10/23 Javascript
判断日期是否能跨月查询的js代码
2014/07/25 Javascript
jQuery实现拖拽页面元素并将其保存到cookie的方法
2016/06/12 Javascript
js style.display=block显示布局错乱问题的解决方法
2016/09/21 Javascript
Angular directive递归实现目录树结构代码实例
2017/05/05 Javascript
node.js的http.createServer过程深入解析
2019/06/06 Javascript
React 实现车牌键盘的示例代码
2019/12/20 Javascript
python如何拆分含有多种分隔符的字符串
2018/03/20 Python
Python实现查找最小的k个数示例【两种解法】
2019/01/08 Python
在django中使用apscheduler 执行计划任务的实现方法
2020/02/11 Python
公认8个效率最高的爬虫框架
2020/07/28 Python
德国化妆品和天然化妆品网上商店:kosmetikfuchs.de
2017/06/09 全球购物
GAP阿联酋官网:GAP UAE
2017/11/30 全球购物
美国保健品专家:Life Extension
2018/05/04 全球购物
杭州-飞时达软件有限公司.net笔面试
2012/04/28 面试题
会计专业自荐信范文
2013/12/02 职场文书
酒店门卫岗位职责
2013/12/29 职场文书
2014信息技术专业毕业生自我评价
2014/01/17 职场文书
乡镇干部先进事迹材料
2014/02/03 职场文书
手机被没收检讨书
2014/02/22 职场文书
艺术学院毕业生自我评价
2014/03/02 职场文书
关于晚自习早退的检讨书
2014/09/13 职场文书
小学英语教师2015年度个人工作总结
2015/10/14 职场文书
三严三实·严以律己心得体会
2016/01/13 职场文书
导游词之南迦巴瓦峰
2019/11/19 职场文书
php TP5框架生成二维码链接
2021/04/01 PHP
Android使用EventBus发送消息,Fragment中接收消息的方法会执行多次
2022/04/24 Java/Android