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 Pear 安装及使用
Mar 19 PHP
使用NetBeans + Xdebug调试PHP程序的方法
Apr 12 PHP
php数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
Oct 31 PHP
php strrpos()与strripos()函数
Aug 31 PHP
php循环创建目录示例分享(php创建多级目录)
Mar 04 PHP
php猜单词游戏
Sep 29 PHP
Symfony2开发之控制器用法实例分析
Feb 05 PHP
PHP使用file_get_content设置头信息的方法
Feb 14 PHP
分析PHP中单双引号的误区和双引号小隐患
Jul 19 PHP
php实现贪吃蛇小游戏
Jul 26 PHP
php提交表单时保留多个空格及换行的文本样式的方法
Jun 20 PHP
ThinkPHP 在阿里云上的nginx.config配置实例详解
Oct 11 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
真正的ZIP文件操作类(php)
2007/07/21 PHP
php设计模式之观察者模式的应用详解
2013/05/21 PHP
php记录代码执行时间(实现代码)
2013/07/05 PHP
php中url传递中文字符,特殊危险字符的解决方法
2013/08/17 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
2015/12/22 PHP
jquery 1.4.2发布!主要是性能与API
2010/02/25 Javascript
发布一个基于javascript的动画类 Fx.js
2010/11/05 Javascript
IE事件对象(The Internet Explorer Event Object)
2012/06/27 Javascript
Jquery判断$(&quot;#id&quot;)获取的对象是否存在的方法
2013/09/25 Javascript
jquery自动切换tabs选项卡的具体实现
2013/12/24 Javascript
javascript 拷贝节点cloneNode()使用介绍
2014/04/03 Javascript
JavaScript中的setUTCDate()方法使用详解
2015/06/11 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
2015/09/02 Javascript
js判断当前页面用什么浏览器打开的方法
2016/01/06 Javascript
javascript图片切换综合实例(循环切换、顺序切换)
2016/01/13 Javascript
Three.js基础部分学习
2017/01/08 Javascript
vue日期组件 支持vue1.0和2.0
2017/01/09 Javascript
jQuery ajax读取本地json文件的实例
2017/10/31 jQuery
NodeJS加密解密及node-rsa加密解密用法详解
2018/10/12 NodeJs
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
2020/07/27 Javascript
vue基于Echarts的拖拽数据可视化功能实现
2020/12/04 Vue.js
8个非常实用的Vue自定义指令
2020/12/15 Vue.js
[59:48]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第一场 1月26日
2021/03/11 DOTA
Python中用sleep()方法操作时间的教程
2015/05/22 Python
python+Django+apache的配置方法详解
2016/06/01 Python
python实现换位加密算法的示例
2018/10/14 Python
Python队列RabbitMQ 使用方法实例记录
2019/08/05 Python
Python socket实现的文件下载器功能示例
2019/11/15 Python
一文带你掌握Pyecharts地理数据可视化的方法
2021/02/06 Python
美国南加州的原创极限运动潮牌:Vans(范斯)
2016/08/05 全球购物
营业经理岗位职责
2013/11/10 职场文书
电钳专业个人求职信
2014/01/04 职场文书
超市采购员岗位职责
2014/02/01 职场文书
生物科学专业自荐书
2014/06/20 职场文书
放牛班的春天观后感
2015/06/01 职场文书
微信小程序和php的登录实现
2021/04/01 PHP