上次写过一篇博客用phpcms2008表单向导 实现一个简单问答的效果,就是用建立两个表单 一个提问表单  一个回答表单,然后就可以直接用get标签调用相关字段。基本满足要求,不过之前好像没遇到过一个问题,就是回复字段 一般 我们会设置成编辑器,目的是让编辑在后台能 将文字弄得专业好看点。在其他页面调用的时候 出现将编辑器里的html语言也调用出来的情况。开始思路是有 就是自己写个函数将html过滤掉。试了好几个方法都不行,后来得到一同事的提醒,用html_entity_decode() 这个函数 将实体先转换成字符 然后再过滤。哈哈,最后成功了!include/global.func.php  里是phpcms2008的全局函数库,里面可以新加你自定义的函数,这个太强大~~

  我为了安全起见 模仿系统原先str_cut()函数,新建个str_cut_b(). 然后就可以直接用了~~
代码:
 
  1. function str_cut_b($string$length$dot = '...'
  2.     $string=html_entity_decode($string,ENT_QUOTES,GB2312); //将实体转换为字符 
  3.     $string=strip_tags($string); //去除html符号 
  4.      
  5.     $strlen = strlen($string); 
  6.     if($strlen <= $lengthreturn $string
  7.     $string = str_replace(array('&nbsp;''&amp;''&quot;''&#039;''&ldquo;',  
  8.  
  9. '&rdquo;''&mdash;''&lt;''&gt;''&middot;''&hellip;'), array(' ''&''"', "'", '"', '"', '', '<', '>',  
  10.  
  11. '·''…'), $string); 
  12.     $strcut = ''
  13.     if(strtolower(CHARSET) == 'utf-8'
  14.     { 
  15.         $n = $tn = $noc = 0; 
  16.         while($n < $strlen
  17.         { 
  18.             $t = ord($string[$n]); 
  19.             if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) { 
  20.                 $tn = 1; $n++; $noc++; 
  21.             } elseif(194 <= $t && $t <= 223) { 
  22.                 $tn = 2; $n += 2; $noc += 2; 
  23.             } elseif(224 <= $t && $t < 239) { 
  24.                 $tn = 3; $n += 3; $noc += 2; 
  25.             } elseif(240 <= $t && $t <= 247) { 
  26.                 $tn = 4; $n += 4; $noc += 2; 
  27.             } elseif(248 <= $t && $t <= 251) { 
  28.                 $tn = 5; $n += 5; $noc += 2; 
  29.             } elseif($t == 252 || $t == 253) { 
  30.                 $tn = 6; $n += 6; $noc += 2; 
  31.             } else { 
  32.                 $n++; 
  33.             } 
  34.             if($noc >= $lengthbreak
  35.         } 
  36.         if($noc > $length$n -= $tn
  37.         $strcut = substr($string, 0, $n); 
  38.     } 
  39.     else 
  40.     { 
  41.         $dotlen = strlen($dot); 
  42.         $maxi = $length - $dotlen - 1; 
  43.         for($i = 0; $i < $maxi$i++) 
  44.         { 
  45.             $strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] :  
  46.  
  47. $string[$i]; 
  48.         } 
  49.     } 
  50.     $strcut = str_replace(array('&''"', "'", '<', '>'), array('&amp;', '&quot;', '&#039;',  
  51.  
  52. '&lt;''&gt;'), $strcut); 
  53.     return $strcut.$dot
  54.      
 
下面是顺便截取字符串的方法 写在一起了。(先过滤再截取)