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 代码优化的42条建议 推荐
Sep 25 PHP
在PHP中检查PHP文件是否有语法错误的方法
Dec 23 PHP
php抓取https的内容的代码
Apr 06 PHP
PHP类中Static方法效率测试代码
Oct 17 PHP
php生成N个不重复的随机数实例
Nov 12 PHP
php检查是否是ajax请求的方法
Apr 16 PHP
PHP整合七牛实现上传文件
Jul 03 PHP
php实现CSV文件导入和导出
Oct 24 PHP
PHP访问数据库集群的方法小结
Mar 14 PHP
PHP微信支付开发实例
Jun 22 PHP
PHP的PDO连接讲解
Jan 24 PHP
PHP如何解决微信文章图片防盗链
Dec 09 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中实现汉字转区位码应用源码实例解析
2010/06/14 PHP
PHP编写的图片验证码类文件分享
2016/06/06 PHP
Yii控制器中filter过滤器用法分析
2016/07/15 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
2017/06/20 PHP
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
PHP PDOStatement::fetchObject讲解
2019/02/01 PHP
js+FSO遍历文件夹下文件并显示
2007/03/07 Javascript
ie 处理 gif动画 的onload 事件的一个 bug
2007/04/12 Javascript
jquery 操作表格实现代码(多种操作打包)
2011/03/20 Javascript
页面图片浮动左右滑动效果的简单实现案例
2014/02/10 Javascript
浅析js中substring和substr的方法
2015/11/09 Javascript
跟我学习javascript的call(),apply(),bind()与回调
2015/11/16 Javascript
AngularJS中$injector、$rootScope和$scope的概念和关联关系深入分析
2017/01/19 Javascript
JS常用知识点整理
2017/01/21 Javascript
JS 插件dropload下拉刷新、上拉加载使用小结
2017/04/13 Javascript
node实现基于token的身份验证
2018/04/09 Javascript
JS复杂判断的更优雅写法代码详解
2018/11/07 Javascript
JavaScript学习笔记之DOM操作实例分析
2019/01/08 Javascript
jquery轻量级数字动画插件countUp.js使用详解
2019/10/17 jQuery
vue和iview实现Scroll 数据无限滚动功能
2019/10/31 Javascript
原生js canvas实现鼠标跟随效果
2020/08/02 Javascript
[01:04:49]KG vs LGD 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python Mysql数据库操作 Perl操作Mysql数据库
2009/01/12 Python
python使用marshal模块序列化实例
2014/09/25 Python
解决sublime+python3无法输出中文的问题
2018/12/12 Python
python实现微信自动回复机器人功能
2019/07/11 Python
Djang的model创建的字段和参数详解
2019/07/27 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
2020/09/09 Python
python+flask编写一个简单的登录接口
2020/11/13 Python
HTML5实现一个能够移动的小坦克示例代码
2013/09/02 HTML / CSS
PHP如何对用户密码进行加密
2014/07/31 面试题
CSMA/CD介质访问控制协议
2015/11/17 面试题
什么是组件架构
2016/05/15 面试题
我有一个梦想演讲稿
2014/05/05 职场文书
2014年汽车销售工作总结
2014/12/01 职场文书
2015年财务科工作总结范文
2015/05/13 职场文书