PHP 获取字符串 函数

//获取字符串
function getstr($string, $length, $in_slashes=0, $out_slashes=0, $censor=0, $bbcode=0, $html=0) {
 global $_SC, $_SGLOBAL;

 $string = trim($string);

 if($in_slashes) {
  //传入的字符有slashes
  $string = sstripslashes($string);
 }
 if($html < 0) {
  //去掉html标签
  $string = preg_replace("/(/<[^/<]*/>|/r|/n|/s|/[.+?/])/is", ' ', $string);
  $string = shtmlspecialchars($string);
 } elseif ($html == 0) {
  //转换html标签
  $string = shtmlspecialchars($string);
 }
 if($censor) {
  //词语屏蔽
  @include_once(S_ROOT.'./data/data_censor.php');
  if($_SGLOBAL['censor']['banned'] && preg_match($_SGLOBAL['censor']['banned'], $string)) {
   showmessage('information_contains_the_shielding_text');
  } else {
   $string = empty($_SGLOBAL['censor']['filter']) ? $string :
    @preg_replace($_SGLOBAL['censor']['filter']['find'], $_SGLOBAL['censor']['filter']['replace'], $string);
  }
 }
 if($length && strlen($string) > $length) {
  //截断字符
  $wordscut = '';
  if(strtolower($_SC['charset']) == 'utf-8') {
   //utf8编码
   $n = 0;
   $tn = 0;
   $noc = 0;
   while ($n < strlen($string)) {
    $t = ord($string[$n]);
    if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {
     $tn = 1;
     $n++;
     $noc++;
    } elseif(194 <= $t && $t <= 223) {
     $tn = 2;
     $n += 2;
     $noc += 2;
    } elseif(224 <= $t && $t < 239) {
     $tn = 3;
     $n += 3;
     $noc += 2;
    } elseif(240 <= $t && $t <= 247) {
     $tn = 4;
     $n += 4;
     $noc += 2;
    } elseif(248 <= $t && $t <= 251) {
     $tn = 5;
     $n += 5;
     $noc += 2;
    } elseif($t == 252 || $t == 253) {
     $tn = 6;
     $n += 6;
     $noc += 2;
    } else {
     $n++;
    }
    if ($noc >= $length) {
     break;
    }
   }
   if ($noc > $length) {
    $n -= $tn;
   }
   $wordscut = substr($string, 0, $n);
  } else {
   for($i = 0; $i < $length - 1; $i++) {
    if(ord($string[$i]) > 127) {
     $wordscut .= $string[$i].$string[$i + 1];
     $i++;
    } else {
     $wordscut .= $string[$i];
    }
   }
  }
  $string = $wordscut;
 }
 if($bbcode) {
  include_once(S_ROOT.'./source/function_bbcode.php');
  $string = bbcode($string, $bbcode);
 }
 if($out_slashes) {
  $string = saddslashes($string);
 }
 return trim($string);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值