萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php 字符截取函數 substr 與自定中英文截取函數

php 字符截取函數 substr 與自定中英文截取函數

本文章要講的是關於php的substr函數與自己寫了一個中英文截取函數哦,關於首先我們來看看substr這個函數的使用方法吧。

substr實例

$content ='i love you www.111cn.net';

 $temp = substr($content,4);

echo $temp;

結果:

love you www.111cn.net' //

下面來看看從右邊取函數。


 $temp = substr($temp,0,-4);

結果為:

i love www.111c

好了,下面我們再來看中文截函數吧。

function MooCutstr($string, $length, $dot = ' ...') {
 global $charset;

 if(strlen($string) <= $length) {
  return $string;
 }
 $string = str_replace(array('&amp;', '&quot;', '&lt;', '&gt;'), array('&', '"', '<', '>'), $string);
 $strcut = '';
 if(strtolower($charset) == 'utf-8') {
  $n = $tn = $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;
  }
  $strcut = substr($string, 0, $n);
 } else {
  for($i = 0; $i < $length; $i++) {
   $strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i];
  }
 }
 //$strcut = str_replace(array('&', '"', '<', '>'), array('&amp;', '&quot;', '&lt;', '&gt;'), $strcut);

 return $strcut.$dot;
}

php substr它不能自動識別中英,所以很多朋友在用substr讀取中文與英的字符串會有時會出現亂碼了,使用第二種方法就OK了。

copyright © 萬盛學電腦網 all rights reserved