php字符串截取普通话截取2,单字节截取情势

//中文截取2,单字节截取模式
function cn_substr($str,$slen,$startdd=0){
    $restr = “”;
    $c = “”;
    $str_len = strlen($str);
    if($str_len < $startdd+1) return “”;
    if($str_len < $startdd + $slen || $slen==0) $slen = $str_len – $startdd;
    $enddd = $startdd + $slen – 1;
    for($i=0;$i<$str_len;$i++)
    {
        if($startdd==0) $restr .= $c;
        else if($i > $startdd) $restr .= $c;

此函数用于截取gb2312编码的中文字符串:

function MooCutstr($string, $length, $dot = ‘ …’) {
 global $charset;

 代码如下

        if(ord($str[$i])>0x80){
            if($str_len>$i+1) $c = $str[$i].$str[$i+1];
            $i++;
        }
        else{    $c = $str[$i]; }

截取字符串专题:php截取字符串函数,php 字符串长度,php截取字符串前几位

 代码如下

 if(strlen($string) <= $length) {
  return $string;
 }
 $string = str_replace(array(‘&’, ‘"’, ‘<‘, ‘>’),
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(‘&’,
‘"’, ‘<‘, ‘>’), $strcut);

function mysubstr( $str, $length ){
   
    $tagcnt = 0;
    $charcnt = 0;
    $tag = ”;
    $maxlen = strlen( $str );
    $resultstr = ”;
    $tagstack = array();

        if($i >= $enddd){
            if(strlen($restr)+strlen($c)>$slen) break;
            else{ $restr .= $c; break; }
        }
    }
    return $restr;
}
function cn_midstr($str,$start,$len){
    return cn_substr($str,$slen,$startdd);
}

PHP截取中文字符串(mb_substr)和获取中文
=> 

<?php
// 说明:截取中文字符串
 
function mysubstr($str, $start, $len) {
    $tmpstr = “”;
    $strlen = $start + $len;
    for($i = 0; $i < $strlen; $i++) {
        if(ord(substr($str, $i, 1)) > 0xa0) {
            $tmpstr .= substr($str, $i, 2);
            $i++;
        } else
            $tmpstr .= substr($str, $i, 1);
    }
    return $tmpstr;
}
?>

 return $strcut.$dot;
}

    for( $i = 0; $i < $length; $i++ ){
        if( $str[$i] == ‘<‘ ){

您可能感兴趣的文章:

  • PHP中字符与字节的区别及字符串与字节转换示例
  • 用PHP来计算某个目录大小的方法
  • php计算一个文件大小的方法
  • php计算整个mysql数据库大小的方法
  • php使用递归计算文件夹大小
  • php对文件夹进行相关操作(遍历、计算大小)
  • php计算整个目录大小的方法
  • php计算整个目录大小的方法
  • vnsc威尼斯城官方网站,php strlen
    mb_strlen计算中英文混排字符串长度
  • PHP实现字节数Byte转换为KB、MB、GB、TB的方法

php 截取字符串第一个字符和最后一个字符
=> 

Utf-8、gb2312都支持的汉字截取函数

            $resultstr .= $str[$i];

php正则截取字符串 => 

截取utf-8字符串函数

            for( $j=$i; $str[$j]!=’>’; $j++,$length++ ){
                $tag .= $str[$j];
            }
            $tagcnt++;
            $length++;
            $tag .= ‘>’;
           
            //如果是开始标记,则入栈,如果是与之相对应的结束标记则出栈
            if( preg_match(‘/<([^/]+)?>/i’, $tag, $r) ){
                echo ‘入栈:’,htmlspecialchars($r[1]),'<br />’;
                array_push($tagstack, $r[1]);
            }
            elseif( preg_match(
‘/’.$tagstack[count($tagstack)-1].’/’, $tag ) ){
                echo
‘出栈:’,htmlspecialchars($tagstack[count($tagstack)-1]),'<br
/>’;
                array_pop( $tagstack );
            }

php url字符串截取路径的文件名和扩展名
=> 

为了支持多语言,数据库里的字符串可能保存为UTF-8编码,在网站开发中可能需要用php截取字符串的一部分。为了避免出现乱码现象,编写如下的UTF-8字符串截取函数

            $tag = ”;
            continue;
        }

php最精确的字符串长度截取函数
=> 

关于utf-8的原理请看 UTF-8 FAQ

        $charcnt++;
        $resultstr .= $str[$i];
    }

PHP字符串分离、截取函数(explod)
=> 

UTF-8编码的字符可能由1~3个字节组成,
具体数目可以由第一个字节判断出来。(理论上可能更长,但这里假设不超过3个字节)
第一个字节大于224的,它与它之后的2个字节一起组成一个UTF-8字符
第一个字节大于192小于224的,它与它之后的1个字节组成一个UTF-8字符
否则第一个字节本身就是一个英文字符(包括数字和一小部分标点符号)。

   
    echo ‘<hr size=1>最后结果为:’;

PHP 截取字符串函数整理
=> 

 代码如下

    //栈是空的直接返回
    if(empty($tagstack)){
        return $resultstr;
    }
    //否则去掉没有结束标记的开始标记
    else{
       
        while(!empty($tagstack)){

PHP截取中文字符串的问题
=> 

<?php
// 说明:Utf-8、gb2312都支持的汉字截取函数
 
/*
Utf-8、gb2312都支持的汉字截取函数
cut_str(字符串, 截取长度, 开始长度, 编码);
编码默认为 utf-8
开始长度默认为 0
*/
 
function cut_str($string, $sublen, $start = 0, $code = ‘UTF-8’)
{
    if($code == ‘UTF-8’)
    {
        $pa =
“/[x01-x7f]|[xc2-xdf][x80-xbf]|xe0[xa0-xbf][x80-xbf]|[xe1-xef][x80-xbf][x80-xbf]|xf0[x90-xbf][x80-xbf][x80-xbf]|[xf1-xf7][x80-xbf][x80-xbf][x80-xbf]/”;
        preg_match_all($pa, $string, $t_string);
 
        if(count($t_string[0]) – $start > $sublen) return join(”,
array_slice($t_string[0], $start, $sublen)).”…”;
        return join(”, array_slice($t_string[0], $start,
$sublen));
    }
    else
    {
        $start = $start*2;
        $sublen = $sublen*2;
        $strlen = strlen($string);
        $tmpstr = ”;
 
        for($i=0; $i<$strlen; $i++)
        {
            if($i>=$start && $i<($start+$sublen))
            {
                if(ord(substr($string, $i, 1))>129)
                {
                    $tmpstr.= substr($string, $i, 2);
                }
                else
                {
                    $tmpstr.= substr($string, $i, 1);
                }
            }
            if(ord(substr($string, $i, 1))>129) $i++;
        }
        if(strlen($tmpstr)<$strlen ) $tmpstr.= “…”;
        return $tmpstr;
    }
}
 
$str = “abcd需要截取的字符串”;
echo cut_str($str, 8, 0, ‘gb2312’);
?>

            $tag = array_pop($tagstack);

php按字符截取中文并保证无乱码的方法
=> 

注意明:

            $index = strrpos($resultstr, $tag);

php不破坏单词截取子字符串
=> 

 代码如下

            for($i = $index-1; $resultstr[$i] != ‘>’; $i++ ){
                $resultstr[$i] = ”;
            }

PHP截取GB2312中文字符串
=> 

function utf8Substr($str, $from, $len)
{
    return
preg_replace(‘#^(?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,’.$from.’}’.
                      
‘((?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,’.$len.’}).*#s’,
                       ‘$1’,$str);
}

            $resultstr[$i++] = ”;
       
        }

PHP 截取中文长度 函数
=> 

可单独截取uft8字符串哦。

        return $resultstr;
    }
   
}

php中文汉字截取函数 => 

程序说明:

$sttime = microtime(true);

PHP截取左起或右起的指定字符串个数
=> 

  1. len 参数以中文字符为标准,1len等于2个英文字符,为了形式上好看些

  2. 如果将magic参数设为false,则中文和英文同等看待,取绝对的字符数

  3. 特别适用于用htmlspecialchars()进行过编码的字符串

  4. 能正确处理GB2312中实体字符模式(𖰰)

$stmem = memory_get_usage();

php截取指定字符之前的字符串
=> 

程序代码:

$str =
“a1<body>b2<p>c3<em>d4</em>e5</p>f6</body>g7h8”;

php截取字符串后几位
=> 

 代码如下

echo ‘处理结果为:<br/><hr size=1>’,htmlspecialchars(
mysubstr( $str, 18 ) ),'<br />’;

PHP截取中文字符串方法总结
=> 

function FSubstr($title,$start,$len=””,$magic=true)
{
/**
* powered by Smartpig
* mailto:d.einstein@263.net
*/

echo “内存使用情况:”,(memory_get_usage()-$stmem),'<br />’;

php如何清除html格式并去除文字中的空格
=> 

$length = 0;
if($len == “”) $len = strlen($title);

echo “算法运行时间(microtime):”,(microtime(true)-$sttime),'<br/>’;

PHP用substr函数截取字符串中的某部分
=> 

//判断起始为不正确位置
if($start > 0)
{
$cnum = 0;
for($i=0;$i<$start;$i++)
{
if(ord(substr($title,$i,1)) >= 128) $cnum ++;
}
if($cnum%2 != 0) $start–;

//方法二

php 字符串截取函数 => 

unset($cnum);
}

/

php字符串截取问题 => 

if(strlen($title)<=$len) return substr($title,$start,$len);

 代码如下

php按照指定长度截取字符串的代码
=> 

$alen = 0;
$blen = 0;

**
 * 函数名 html_substr
 * 功能 从html串中截取指定长度的字串,html标记不计算在内
 * 参数
 *  $str 要截取的串
 *  $len 要截取的长度
 *  $mode 不匹配的标记的处理方式 0 删去(默认),1 补齐
 * 返回 截取到的串
 * 说明
 *  未考虑多字节字符,仅已字节做计数单位
 *  未考虑可单独存在的标记
 **/
function html_substr($str, $len, $mode=0) {
  $ar= preg_split(‘/(<!–.*–>|<[^>]*>)/s’, $str,
-1, preg_split_delim_capture);
  foreach($ar as $k => $v) {
    if($v{0} != ‘<‘) {
      $len = $len – strlen($v);
      if($len < 0) $ar[$k] = substr($v, 0, $len);
    }else $ar[$k] = strtolower($v);
    if($len <= 0) break;
  }
  $ar = array_slice($ar, 0, $k+1);
  $len = count($ar);
  foreach($ar as $k=>$v) {
    if($v{0} == ‘<‘ && $v[1] != ‘/’) {
      $ch = str_replace(‘<‘, ‘</’, $v);
      for($i=$k+1; $i<$len && $ar[$i]!=$ch; $i++);
      if($i == $len)
        if($mode)
          $ar[$len] = $ch . $ar[$len];
        else
          $ar[$k] = ”;
    }
  }
  return join(”, $ar);
}
$str = “123<em>abc</em>456<em>def</em>789”;

php按单词截取字符串的代码
=> 

$realnum = 0;

echo ‘<xmp>’;
echo html_substr($str, 5) . php_eol;
echo html_substr($str, 5, 1);

PHPCMS字符串截取 => 

for($i=$start;$i<strlen($title);$i++)
{
$ctype = 0;
$cstep = 0;
$cur = substr($title,$i,1);
if($cur == “&”)
{
if(substr($title,$i,4) == “<“)
{
$cstep = 4;
$length += 4;
$i += 3;
$realnum ++;
if($magic)
{
$alen ++;
}
}
else if(substr($title,$i,4) == “>”)
{
$cstep = 4;
$length += 4;
$i += 3;
$realnum ++;
if($magic)
{
$alen ++;
}
}
else if(substr($title,$i,5) == “&”)
{
$cstep = 5;
$length += 5;
$i += 4;
$realnum ++;
if($magic)
{
$alen ++;
}
}
else if(substr($title,$i,6) == “””)
{
$cstep = 6;
$length += 6;
$i += 5;
$realnum ++;
if($magic)
{
$alen ++;
}
}
else if(substr($title,$i,6) == “‘”)
{
$cstep = 6;
$length += 6;
$i += 5;
$realnum ++;
if($magic)
{
$alen ++;
}
}
else if(preg_match(“/&#(d+);/i”,substr($title,$i,8),$match))
{
$cstep = strlen($match[0]);
$length += strlen($match[0]);
$i += strlen($match[0])-1;
$realnum ++;
if($magic)
{
$blen ++;
$ctype = 1;
}
}
}else{
if(ord($cur)>=128)
{
$cstep = 2;
$length += 2;
$i += 1;
$realnum ++;
if($magic)
{
$blen ++;
$ctype = 1;
}
}else{
$cstep = 1;
$length +=1;
$realnum ++;
if($magic)
{
$alen++;
}
}
}

 

PHP中文字符串截取函数 支持gb2312,gbk,big
=> 

if($magic)
{
if(($blen*2+$alen) == ($len*2)) break;
if(($blen*2+$alen) == ($len*2+1))
{
if($ctype == 1)
{
$length -= $cstep;
break;
}else{
break;
}
}
}else{
if($realnum == $len) break;
}
}

 

PHP截取汉字乱码问题解决方法
=> 

unset($cur);
unset($alen);
unset($blen);
unset($realnum);
unset($ctype);
unset($cstep);

//方法三

php字符串截取的简单方法
=> 

return substr($title,$start,$length);
}

 

php截取字符串前几位
=> 

 代码如下

利用php截取字符去掉最后一个字符
=> 

$str =
“a1<body>b2c3<p><em>d4</em>e</p>5f6</body>g7h8”;
$gn  = 7;
$i   = $j = $k = 0;
while( ($c = $str[$i++]) && $j < $gn )
{
    if( $c == ‘<‘)
    {
        $tag = 1;
    }
    elseif($c == ‘>’)
    {
        if(trim($tg,’/’) == ’em’)
        {
            $tgs[$j-1] = ‘<‘.$tg.’>’;
        }
        else
        {
            if($tgs[$j-1]) $ogs[$j-1] = ‘1|’.'<‘.$tg.’>’;
            else $ogs[$j-1]           = ‘0|’.'<‘.$tg.’>’;
        }
        $tag = 0;
        $tg  = ”;
    }
    elseif($tag == 1)
    {
        $tg .= $c;
    }
    else
    {
        $tmp[] = $c;
        $j++;
    }
}
$ts = count($tgs);
if($ts % 2) array_pop($tgs);
foreach($tmp as $k=>$v)
{
   $ba = explode(‘|’,$ogs[$k],2);
   if( $tgs[$k] && $ogs[$k])
   {
        if($ba[0])
        {
            $s .= $v.$tgs[$k].$ba[1];
        }   
        else $s .= $v.$ba[1].$tgs[$k];
   }
   else $s .= $v.$tgs[$k].$ba[1];
}

php防止截取中文字符串乱码的函数
=> 

echo htmlspecialchars($s);

php截取字符串函数(不打断单词)的方法
=> 

php中计算中文字符串长度、截取中文字符
=> 

php 截取指定字符之前的字符串
=> 

php字符串截取(这个是emlog里提出来的,其实
=> 

php实现截取URL地址中的主域名
=> 

支持多编码字符串截取php函数
=> 

PHP:UTF-8、GB2312都支持的汉字截取函数
=> 

php截取编码为utf8的字符串
=> 

四个php中文字符串截取函数
=> 

相关文章