传说中的UBB, 用正则替换那些危险的数据!
比如HTML代码中的<a href="mylink.php">我的链接</a>
UBB代码是我的链接
可以替换为
preg_replace("/\[url=(.+?)\](.+?)\[\/url\]/is", "<a href=\"$1\">$2</a>", $myvar);
i 不区分大小写的匹配.
s 匹配所有字符包括换行

解决方案 »

  1.   

    有需要过滤吗,输出时htmlspecialchars就可以了
      

  2.   

    我也想知道这个问题.假如别人留言时输入html代码,怎么样把它过滤掉.<急!!在线等!>
      

  3.   

    strip_tags 可过滤指定的HTML标签
    过滤空格 preg_replace("/ +/"," ",$string);
      

  4.   

    请使用inputfilter.这样你就不用担心
      

  5.   

    谢谢各位的回答,但是问题没解决:
    1、我用的HTML在线编辑器是HTMLAREA那样的所见即所得的,不是用UBB的
    2、用JS过滤的话,可以被用户绕过
    3、不过滤我觉得是有危险的,比如用户可能输入一些JS恶意代码
      

  6.   

    所见即所得的那种编辑器,他也是UBB的形式的,只不过多了一道工序,
    让你不用手工输入那些UBB代码了!
    你也可以affirm那些用户的数据立即替换为UBB代码,提交的时候,
    只替换正确的UBB代码为HTML格式,其它的一律不管!恶意的JS代码,他也必须是<script>开头</script>结尾
    你把<和>在PHP脚本中替换掉!
    <替换为&#60;
    >替换为&#62;
    输出到HTML时候显示&#60; 和 &#62
    这样JS还能执行吗?
      

  7.   

    楼上没用过HTMLAREA或FCK吗?
      

  8.   

    比如CSDN的BLOG,用的是FCK,我也可以插入JAVASCRIPT:
    http://blog.csdn.net/stan23/archive/2006/11/16/1389013.aspx
      

  9.   

    各位高手:我也有个表单的问题:
    我用php做了个留言版.用户提交信息时,有专门页面act.php检测!如果输入不完整,就回到原来留言的页面.但用户原先输入的内容已经刷新掉了.想问一下怎么保留原先输入的内容.<急!!>