php中显示格式化的用户输入(二)

操作方法

  • 01

    请参看下面的源代码: <?PHP function format_output($output) {/***************************************************************************** Takes a raw string ($output) and formats it for output using a special* stripped down markup that is similar to HTML****************************************************************************/ $output = htmlspecialchars(stripslashes($output)); /* new paragraph */$output = str_replace('[p]', '<p>', $output); /* bold */$output = str_replace('[b]', '<b>', $output);$output = str_replace('[/b]', '</b>', $output); /* italics */$output = str_replace('[i]', '<i>', $output);$output = str_replace('[/i]', '</i>', $output); /* preformatted */$output = str_replace('[pre]', '<pre>', $output);$output = str_replace('[/pre]', '</pre>', $output); /* indented blocks (blockquote) */$output = str_replace('[indent]', '<blockquote>', $output);$output = str_replace('[/indent]', '</blockquote>', $output); /* anchors */$output = ereg_replace('\[anchor="([[:graph:]]+)"\]', '<a name="\\1"></a>', $output); /* links, note we try to prevent JavaScript in links */$output = str_replace('[link="Javascript', '[link=" javascript', $output);$output = ereg_replace('\[link="([[:graph:]]+)"\]', '<a href="\\1">', $output);$output = str_replace('[/link]', '</a>', $output); return nl2br($output);} ?>一些注意的地方: 记住替换自定义标记生成HTML标记字符串是在调用htmlspecialchars()函数之后,而不是在这个调用之前,否则你的艰苦的工作在调用htmlspecialchars()后将付之东流。 在经过转换之后,查找HTML代码将是替换过的,如双引号"将成为" nl2br()函数将回车换行符转换为<br>标记,也要在htmlspecialchars()之后。 当转换[links=""] 到 <a href="">, 你必须确认提交者不会插入JavaScript脚本,一个简单的方法去更改[link="Javascript 到 [link=" javascript, 这种方式将不替换,只是将原本的代码显示出来。 outputlib.PHP在浏览器中调用test.php,可以看到format_output() 的使用情况 正常的HTML标记不能被使用,用下列的特殊标记替换它: - this is bold- this is italics- this is [link="httpww.phPBuilder.com"]a link[/link]- this is [anchor="test"]an anchor, and a [link="#test"]link[/link] to the anchor [p]段落[pre]预先格式化[/pre][indent]交错文本[/indent] 这些只是很少的标记,当然,你可以根据你的需求随意加入更多的标记 Conclusion结论 这个讨论提供安全显示用户输入的方法,可以使用在下列程序中 留言板用户建议系统公告BBS系统

(0)

相关推荐

  • WPS如何设置修订中显示的用户信息

    WPS是现在十分常用的一款办公软件,支持多种文件类型,有些用户想知道如何在修订中显示用户信息,接下来小编就给大家介绍一下具体的操作步骤.具体如下:1. 首先第一步打开电脑中的需要编辑的Word文档,根 ...

  • excel怎么输入大于15位的数字?excel中显示大于15位数的数值的方法介绍

    excel里面怎样显示大于15位数的数值?excel中经常遇到输入身份证或者银行卡号等超过15位的数字尾数变成0的情况,因为,excel中默认最大只能显示14位的数字,再向上的超大数字将无法正常显示, ...

  • 在excel表格中如何输入数字就在单元格中显示文字?

    在有些时候我们不想显示文字而是需要相应的代码来进行代替,只要输入代码就能在单元格中显示文字,那么这种方式该如何进行设置呢?现在就把设置的步骤分享给大家,希望对你有所帮助. 步骤 1.首先启动wps表格 ...

  • 如何设置使得华为手机中的手写输入与拼音输入显示在同一页面

    随着科技的发展,手机已经成为人们日常生活中必不可少的工具,当我们在使用华为手机时,如果想要在使用手写输入的同时能够显示拼音的话,应如何设置呢?接下来就由小编来告诉大家.具体如下:1. 第一步,打开手机 ...

  • 在word2003文档中显示页眉页脚的方法

    当我们新建一个Word2003空白文档时,页面上不会显示该文档的页眉和页脚,如图一。 图一 使用Word缺省模板新建的空白文档 选择“视图”—“页眉和页脚”菜单项,将打开“页眉和页脚”工具栏,同时在文 ...

  • 插入U盘后显示格式化却没有反应

    前些天,因为公司里一个同事的U盘也出现了问题,症状是"将这4G的U盘插到电脑时,可以显示发现新硬件,但是打开U盘目录时无法显示并提示没有硬件,请插入移动硬盘.在U盘点右键/属性,显示为容量等 ...

  • Windows8系统识别不到光驱在设备管理器中显示驱动损坏

    安装Windows8系统后,出现这样或那样的小故障是正常的。有些用户发现Windows8系统无法识别光驱,或是在设备管理器中显示驱动损坏等情况,这该怎么办? Windows8系统识别不到光驱的解决方法 ...

  • 在Linux中添加普通新用户

    在Linux中添加普通新用户 ,超级用户(也称为“root”)是一个具有修改系统中任何文件权力的特别账号。在日常工作中,最好不要使用超级用户账号进入系统,因为任何错误操作都可能导致巨大的损失。由于超级 ...

  • Win7游戏管理器的使用让第三方游戏在游戏管理器中显示

    提起Win7的游戏管理器,可以将众多的游戏集成到一个窗口中且能完整地显示每个游戏的详细信息,因此非常方便我们从中选择自己喜欢的游戏来玩。但美中不足的是,Windows7游戏管理器只支持显示微软自己开发 ...