您好,欢迎访问一九零五行业门户网

php 截取字符串函数(中文字符串)(1/2)_PHP教程

php 截取字符串函数(中文字符串)这是一款php 截取字符串函数哦,这是一款支持中文字符串哦,它可以截取html与中西文,等混合的内容,并且把html标签不算在字符截取之内,如果html标签没有闭合,程序将自动过滤多余的标签。
php教程 截取字符串函数(中文字符串)
这是一款php 截取字符串函数哦,这是一款支持中文字符串哦,它可以截取html与中西文,等混合的内容,并且把html标签不算在字符截取之内,如果html标签没有闭合,程序将自动过滤多余的标签。
*/
function mysubstr( $str, $length ){
$tagcnt = 0;
    $charcnt = 0;
    $tag = '';
    $maxlen = strlen( $str );
    $resultstr = '';
    $tagstack = array();
    for( $i = 0; $i         if( $str[$i] == '
            $resultstr .= $str[$i];
            for( $j=$i; $str[$j]!='>'; $j++,$length++ ){
                $tag .= $str[$j];
            }
            $tagcnt++;
            $length++;
            $tag .= '>';
//如果是开始标记,则入栈,如果是与之相对应的结束标记则出栈
            if( preg_match('//i', $tag, $r) ){
                echo '入栈:',htmlspecialchars($r[1]),'
';
                array_push($tagstack, $r[1]);
            }
            elseif( preg_match( '/'.$tagstack[count($tagstack)-1].'/', $tag ) ){
                echo '出栈:',htmlspecialchars($tagstack[count($tagstack)-1]),'
';
                array_pop( $tagstack );
            }
            $tag = '';
            continue;
        }
        $charcnt++;
        $resultstr .= $str[$i];
    }
echo '
最后结果为:';    //栈是空的直接返回
    if(empty($tagstack)){
        return $resultstr;
    }
    //否则去掉没有结束标记的开始标记
    else{
while(!empty($tagstack)){
            $tag = array_pop($tagstack);
            $index = strrpos($resultstr, $tag);
            for($i = $index-1; $resultstr[$i] != '>'; $i++ ){
                $resultstr[$i] = '';
            }
            $resultstr[$i++] = '';
}
        return $resultstr;
    }
}
$sttime = microtime(true);
$stmem = memory_get_usage();
$str = a1
b2c3d4e5
f6g7h8;echo '处理结果为:
',htmlspecialchars( mysubstr( $str, 18 ) ),'
';echo 内存使用情况:,(memory_get_usage()-$stmem),'
';
echo 算法运行时间(microtime):,(microtime(true)-$sttime),'
';
//方法二
/
**
 * 函数名 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     }else $ar[$k] = strtolower($v);
    if($len   }
  $ar = array_slice($ar, 0, $k+1);
  $len = count($ar);
  foreach($ar as $k=>$v) {
    if($v{0} == '      $ch = str_replace('      for($i=$k+1; $i      if($i == $len)
        if($mode)
          $ar[$len] = $ch . $ar[$len];
        else
          $ar[$k] = '';
    }
  }
  return join('', $ar);
}
$str = 123abc456def789;
echo '
';
echo html_substr($str, 5) . php_eol;
echo html_substr($str, 5, 1);1 2
http://www.bkjia.com/phpjc/632042.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/632042.htmltecharticlephp 截取字符串函数(中文字符串)这是一款php 截取字符串函数哦,这是一款支持中文字符串哦,它可以截取html与中西文,等混合的内容,...
其它类似信息

推荐信息