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下MAIL的另一解决方案
Oct 09 PHP
8个必备的PHP功能实例代码
Oct 27 PHP
php导入csv文件碰到乱码问题的解决方法
Feb 10 PHP
微信支付开发维权通知实例
Jul 12 PHP
PHP定时任务获取微信access_token的方法
Oct 10 PHP
Zend Framework过滤器Zend_Filter用法详解
Dec 09 PHP
php+redis实现多台服务器内网存储session并读取示例
Jan 12 PHP
PHP解耦的三重境界(浅谈服务容器)
Mar 13 PHP
php之可变变量的实例详解
Sep 12 PHP
关于php unset对json_encode的影响详解
Nov 14 PHP
PHP面向对象程序设计之对象的遍历操作示例
Jun 12 PHP
THINKPHP5.1 Config的配置与获取详解
Jun 08 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 操作文件的一些FAQ总结
2009/02/12 PHP
理解php Hash函数,增强密码安全
2011/02/25 PHP
比较简单实用的PHP无限分类源码分享(思路不错)
2011/10/13 PHP
Codeigniter注册登录代码示例
2014/06/12 PHP
php实现两表合并成新表并且有序排列的方法
2014/12/05 PHP
php实现统计目录文件大小的函数
2015/12/25 PHP
LBS blog sql注射漏洞[All version]-官方已有补丁
2007/08/26 Javascript
img的onload的另类用法
2008/01/10 Javascript
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
2010/04/01 Javascript
解析Jquery取得iframe中元素的几种方法
2013/07/04 Javascript
js检测浏览器版本、核心、是否移动端示例
2014/04/24 Javascript
jQuery+HTML5实现手机摇一摇换衣特效
2015/06/05 Javascript
浅析javascript中的事件代理
2015/11/06 Javascript
基于jQuery的网页影音播放器jPlayer的基本使用教程
2016/03/08 Javascript
AngularJS过滤器详解及示例代码
2016/08/16 Javascript
jQuery动态改变多行文本框高度的方法
2016/09/07 Javascript
jQuery事件_动力节点Java学院整理
2017/07/05 jQuery
详解使用uni-app开发微信小程序之登录模块
2019/05/09 Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
2020/07/09 Javascript
python里大整数相乘相关技巧指南
2014/09/12 Python
python使用自定义user-agent抓取网页的方法
2015/04/15 Python
Python向Excel中插入图片的简单实现方法
2018/04/24 Python
在Mac下使用python实现简单的目录树展示方法
2018/11/01 Python
python实现扫描ip地址的小程序
2019/04/16 Python
Python3.5集合及其常见运算实例详解
2019/05/01 Python
使用coverage统计python web项目代码覆盖率的方法详解
2019/08/05 Python
python超时重新请求解决方案
2019/10/21 Python
python实现在多维数组中挑选符合条件的全部元素
2019/11/26 Python
Pycharm配置PyQt5环境的教程
2020/04/02 Python
基于Python的身份证验证识别和数据处理详解
2020/11/14 Python
Python调用ffmpeg开源视频处理库,批量处理视频
2020/11/16 Python
HTML5实现自带进度条和滑块滑杆效果
2018/04/17 HTML / CSS
2014年大学生党员评议表自我评价
2014/09/20 职场文书
党支部考察鉴定意见
2015/06/02 职场文书
新入职员工工作总结
2015/10/15 职场文书
JavaScript实现简单的音乐播放器
2022/08/14 Javascript