php专区

 首页 > php专区 > PHP应用 > php函数大全 > php 截取字符串函数(中文字符串) - php函数

php 截取字符串函数(中文字符串) - php函数

分享到:
【字体:
导读:
          ​php 截取字符串函数(中文字符串) 这是一款php 截取字符串函数哦,这是一款支持中文字符串哦,它可以截取html与中西文,等混合的内容,并且把html标签不算在字符截取之内...

php 截取字符串函数(中文字符串)

php 截取字符串函数(中文字符串) 这是一款php 截取字符串函数哦,这是一款支持中文字符串哦,它可以截取html与中西文,等混合的内容,并且把html标签不算在字符截取之内,如果html标签没有闭合,程序将自动过滤多余的标签。

方法一:

  1. function mysubstr( $str$length ){ 
  2.      
  3.     $tagcnt = 0; 
  4.     $charcnt = 0; 
  5.     $tag = ''
  6.     $maxlen = strlen$str ); 
  7.     $resultstr = ''
  8.     $tagstack = array(); 
  9.     for$i = 0; $i < $length$i++ ){ 
  10.         if$str[$i] == '<' ){ 
  11.             $resultstr .= $str[$i]; 
  12.             for$j=$i$str[$j]!='>'$j++,$length++ ){ 
  13.                 $tag .= $str[$j]; 
  14.             } 
  15.             $tagcnt++; 
  16.             $length++; 
  17.             $tag .= '>'
  18.              
  19.             //如果是开始标记,则入栈,如果是与之相对应的结束标记则出栈 
  20.             if( preg_match('/<([^/]+)?>/i'$tag$r) ){ 
  21.                 echo '入栈:',htmlspecialchars($r[1]),''
  22.                 array_push($tagstack$r[1]); 
  23.             } 
  24.             elseif( preg_match( '/'.$tagstack[count($tagstack)-1].'/'$tag ) ){ 
  25.                 echo '出栈:',htmlspecialchars($tagstack[count($tagstack)-1]),''
  26.                 array_pop$tagstack ); 
  27.             } 
  28.             $tag = ''
  29.             continue
  30.         } 
  31.         $charcnt++; 
  32.         $resultstr .= $str[$i]; 
  33.     } 
  34.      
  35.     echo '最后结果为:'
  36.     //栈是空的直接返回 
  37.     if(emptyempty($tagstack)){ 
  38.         return $resultstr
  39.     } 
  40.     //否则去掉没有结束标记的开始标记 
  41.     else
  42.          
  43.         while(!emptyempty($tagstack)){ 
  44.             $tag = array_pop($tagstack); 
  45.             $index = strrpos($resultstr$tag); 
  46.             for($i = $index-1; $resultstr[$i] != '>'$i++ ){ 
  47.                 $resultstr[$i] = ''
  48.             } 
  49.             $resultstr[$i++] = ''
  50.          
  51.         } 
  52.         return $resultstr
  53.     } 
  54.      
  55. $sttime = microtime(true); 
  56. $stmem = memory_get_usage(); 
  57. $str = "a1b2

    c3d4e5

    f6g7h8"
  58. echo '处理结果为:
    '
    ,htmlspecialchars( mysubstr( $str, 18 ) ),''
  59. echo "内存使用情况:",(memory_get_usage()-$stmem),''
  60. echo "算法运行时间(microtime):",(microtime(true)-$sttime),'
    '

方法二:

  1. ** 
  2.  * 函数名 html_substr 
  3.  * 功能 从html串中截取指定长度的字串,html标记不计算在内 
  4.  * 参数 
  5.  *  $str 要截取的串 
  6.  *  $len 要截取的长度 
  7.  *  $mode 不匹配的标记的处理方式 0 删去(默认),1 补齐 
  8.  * 返回 截取到的串 
  9.  * 说明 
  10.  *  未考虑多字节字符,仅已字节做计数单位 
  11.  *  未考虑可单独存在的标记 
  12.  **/ 
  13. function html_substr($str$len$mode=0) { 
  14.   $ar= preg_split('/(|<[^>]*>)/s'$str, -1, preg_split_delim_capture); 
  15.   foreach($ar as $k => $v) { 
  16.     if($v{0} != '<') { 
  17.       $len = $len - strlen($v); 
  18.       if($len < 0) $ar[$k] = substr($v, 0, $len); 
  19.     }else $ar[$k] = strtolower($v); 
  20.     if($len <= 0) break
  21.   } 
  22.   $ar = array_slice($ar, 0, $k+1); 
  23.   $len = count($ar); 
  24.   foreach($ar as $k=>$v) { 
  25.     if($v{0} == '<' && $v[1] != '/') { 
  26.       $ch = str_replace('<''$v); 
  27.       for($i=$k+1; $i<$len && $ar[$i]!=$ch$i++); 
  28.       if($i == $len
  29.         if($mode
  30.           $ar[$len] = $ch . $ar[$len]; 
  31.         else 
  32.           $ar[$k] = ''
  33.     } 
  34.   } 
  35.   return join(''$ar); 
  36. $str = "123abc456def789"
  37. echo ''</span><span>; </span></span></li> <li class="alt"><span><span class="func">echo</span><span> html_substr(</span><span class="vars">$str</span><span>, 5) . php_eol; </span></span></li> <li><span><span class="func">echo</span><span> html_substr(</span><span class="vars">$str</span><span>, 5, 1); </span></span></li> </ol> </blockquote> <p><strong>方法三:</strong></p> <blockquote> <ol class="dp-c"> <li class="alt"><span><span class="vars">$str</span><span> = </span><span class="string">"a1<body>b2c3<p><em>d4</em>e</p>5f6</body>g7h8"</span><span>; </span></span></li> <li><span><span class="vars">$gn</span><span>  = 7; </span></span></li> <li class="alt"><span><span class="vars">$i</span><span>   = </span><span class="vars">$j</span><span> = </span><span class="vars">$k</span><span> = 0; </span></span></li> <li><span><span class="keyword">while</span><span>( (</span><span class="vars">$c</span><span> = </span><span class="vars">$str</span><span>[</span><span class="vars">$i</span><span>++]) && </span><span class="vars">$j</span><span> < </span><span class="vars">$gn</span><span> )  </span></span></li> <li class="alt"><span>{ </span></li> <li><span>    <span class="keyword">if</span><span>( </span><span class="vars">$c</span><span> == </span><span class="string">'<'</span><span>) </span></span></li> <li class="alt"><span>    { </span></li> <li><span>        <span class="vars">$tag</span><span> = 1; </span></span></li> <li class="alt"><span>    } </span></li> <li><span>    <span class="keyword">elseif</span><span>(</span><span class="vars">$c</span><span> == </span><span class="string">'>'</span><span>) </span></span></li> <li class="alt"><span>    { </span></li> <li><span>        <span class="keyword">if</span><span>(trim(</span><span class="vars">$tg</span><span>,</span><span class="string">'/'</span><span>) == </span><span class="string">'em'</span><span>) </span></span></li> <li class="alt"><span>        { </span></li> <li><span>            <span class="vars">$tgs</span><span>[</span><span class="vars">$j</span><span>-1] = </span><span class="string">'<'</span><span>.</span><span class="vars">$tg</span><span>.</span><span class="string">'>'</span><span>; </span></span></li> <li class="alt"><span>        } </span></li> <li><span>        <span class="keyword">else</span><span>  </span></span></li> <li class="alt"><span>        { </span></li> <li><span>            <span class="keyword">if</span><span>(</span><span class="vars">$tgs</span><span>[</span><span class="vars">$j</span><span>-1]) </span><span class="vars">$ogs</span><span>[</span><span class="vars">$j</span><span>-1] = </span><span class="string">'1|'</span><span>.</span><span class="string">'<'</span><span>.</span><span class="vars">$tg</span><span>.</span><span class="string">'>'</span><span>; </span></span></li> <li class="alt"><span>            <span class="keyword">else</span><span> </span><span class="vars">$ogs</span><span>[</span><span class="vars">$j</span><span>-1]           = </span><span class="string">'0|'</span><span>.</span><span class="string">'<'</span><span>.</span><span class="vars">$tg</span><span>.</span><span class="string">'>'</span><span>; </span></span></li> <li><span>        } </span></li> <li class="alt"><span>        <span class="vars">$tag</span><span> = 0; </span></span></li> <li><span>        <span class="vars">$tg</span><span>  = </span><span class="string">''</span><span>; </span></span></li> <li class="alt"><span>    } </span></li> <li><span>    <span class="keyword">elseif</span><span>(</span><span class="vars">$tag</span><span> == 1) </span></span></li> <li class="alt"><span>    { </span></li> <li><span>        <span class="vars">$tg</span><span> .= </span><span class="vars">$c</span><span>; </span></span></li> <li class="alt"><span>    } </span></li> <li><span>    <span class="keyword">else</span><span> </span></span></li> <li class="alt"><span>    { </span></li> <li><span>        <span class="vars">$tmp</span><span>[] = </span><span class="vars">$c</span><span>; </span></span></li> <li class="alt"><span>        <span class="vars">$j</span><span>++; </span></span></li> <li><span>    } </span></li> <li class="alt"><span>} </span></li> <li><span><span class="vars">$ts</span><span> = </span><span class="func">count</span><span>(</span><span class="vars">$tgs</span><span>); </span></span></li> <li class="alt"><span><span class="keyword">if</span><span>(</span><span class="vars">$ts</span><span> % 2) </span><span class="func">array_pop</span><span>(</span><span class="vars">$tgs</span><span>); </span></span></li> <li><span><span class="keyword">foreach</span><span>(</span><span class="vars">$tmp</span><span> </span><span class="keyword">as</span><span> </span><span class="vars">$k</span><span>=></span><span class="vars">$v</span><span>) </span></span></li> <li class="alt"><span>{ </span></li> <li><span>   <span class="vars">$ba</span><span> = </span><span class="func">explode</span><span>(</span><span class="string">'|'</span><span>,</span><span class="vars">$ogs</span><span>[</span><span class="vars">$k</span><span>],2); </span></span></li> <li class="alt"><span>   <span class="keyword">if</span><span>( </span><span class="vars">$tgs</span><span>[</span><span class="vars">$k</span><span>] && </span><span class="vars">$ogs</span><span>[</span><span class="vars">$k</span><span>]) </span></span></li> <li><span>   { </span></li> <li class="alt"><span>        <span class="keyword">if</span><span>(</span><span class="vars">$ba</span><span>[0]) </span></span></li> <li><span>        { </span></li> <li class="alt"><span>            <span class="vars">$s</span><span> .= </span><span class="vars">$v</span><span>.</span><span class="vars">$tgs</span><span>[</span><span class="vars">$k</span><span>].</span><span class="vars">$ba</span><span>[1]; </span></span></li> <li><span>        }     </span></li> <li class="alt"><span>        <span class="keyword">else</span><span> </span><span class="vars">$s</span><span> .= </span><span class="vars">$v</span><span>.</span><span class="vars">$ba</span><span>[1].</span><span class="vars">$tgs</span><span>[</span><span class="vars">$k</span><span>]; </span></span></li> <li><span>   } </span></li> <li class="alt"><span>   <span class="keyword">else</span><span> </span><span class="vars">$s</span><span> .= </span><span class="vars">$v</span><span>.</span><span class="vars">$tgs</span><span>[</span><span class="vars">$k</span><span>].</span><span class="vars">$ba</span><span>[1]; </span></span></li> <li><span>} </span></li> <li class="alt"><span><span class="func">echo</span><span> htmlspecialchars(</span><span class="vars">$s</span><span>); </span></span></li> </ol> </blockquote> <!--内容关联投票--> </div> <div class="clearfix divider_dashed333"></div> <div class="lh24 f12 mt20 bb1e pb20"> <div class="fr" style=" padding-right: 20px"> <ul class="paginationa my_ajax"> <li id="fav_GWNeoLaXmA2pvz1_bottom"><a href="javascript:;" class="arfav" data-info_id="GWNeoLaXmA2pvz1" data-info_title="php 截取字符串函数(中文字符串) - php函数" data-info_num="11">收藏(<span id="ar_fav">1</span>)</a></li> <li id="zan_GWNeoLaXmA2pvz1_bottom"><a href="javascript:;" class="arzan" data-info_id="GWNeoLaXmA2pvz1" data-info_title="php 截取字符串函数(中文字符串) - php函数" data-info_num="11">赞(<span id="ar_zan">28</span>)</a></li> <li id="bao_GWNeoLaXmA2pvz1_bottom"><a href="javascript:;" class="arbao" data-info_id="GWNeoLaXmA2pvz1" data-info_title="php 截取字符串函数(中文字符串) - php函数" data-info_num="11">举报</a></li> </ul> </div> <span class="f12 blue_lighten mr10 fr" style="width: 200px;"> <span class="lh24 f12 c9 fl">分享到:</span> <div class="bdsharebuttonbox bdshare_t bds_tools get-codes-bdshare fl"><a href="#" class="bds_qzone" data-cmd="qzone" title="分享到QQ空间"></a><a href="#" class="bds_tsina" data-cmd="tsina" title="分享到新浪微博"></a><a href="#" class="bds_tqq" data-cmd="tqq" title="分享到腾讯微博"></a><a href="#" class="bds_renren" data-cmd="renren" title="分享到人人网"></a><a href="#" class="bds_weixin" data-cmd="weixin" title="分享到微信"></a><a href="#" class="bds_more" data-cmd="more"></a></div> </span> </div> <div class="clearfix divider_dashed333"></div> </div> <div class="clearfix"></div> <div style="padding:0px 20px;"> <div class="one_half"> <div class="about_author"> <a href="https://www.nbla.cn/article/_o7P3Gq9Y1xq1lR6.html">php生成随机密码函数 - php函数</a> <br/> php生成随机密码函数 下面提供了四款php生成随机密码函数哦,方法简单实用是一款用户自定的加密函数,这样如果不知道你的加密算法是很难破解的. 方法一: function generate_password( $length = 8 ) {      // 密码字符集,可任意添加你需要的字符      $chars =... </div> </div> <div class="one_half last"> <div class="about_author"> <a href="https://www.nbla.cn/article/_B8dgYLVrPzLOe6Z.html">php 删除目录及所有文件 - php函数</a> <br/> php 删除目录及所有文件 function del($name) {    if (!is_dir($name)) {     return @unlink($name);    } else {     $dir = opendir($name);     while( $file = readdir( $dir ) ) {      if (($file==&amp;#039;.&amp;#039;)||($file... </div> </div> <div class="clearfix margin_top5"></div> <div class="one_half"> <div class="popular-posts-area"> <ul class="recent_posts_list"> <li><a href="https://www.nbla.cn/article/_xBrjZ2G3e82NYVd.html">【转】超实用PHP函数总结整理</a> <i>Jan 24, 2017</i> </li><li><span><a href="https://www.nbla.cn/article/_ZKNWxLrJ1WL3B98.html"><img src="http://static.nbla.cn/Uploads/image/2017-03-31/14909437022610.jpg?watermark/1/image/aHR0cDovL3N0YXRpYy5uYmxhLmNuLzEzMTAxMTYxMDktMi5wbmc=/dissolve/100/gravity/SouthEast/dx/10/dy/0" height="50px" width="50px" alt="strip_tags 函数用法与实例教程" /></a></span><a href="https://www.nbla.cn/article/_ZKNWxLrJ1WL3B98.html">strip_tags 函数用法与实例教程</a> <i>Nov 14, 2016</i> </li><li><span><a href="https://www.nbla.cn/article/_VmyK52bwv0LZbDR.html"><img src="http://static.nbla.cn/Uploads/image/2017-03-31/14909436599089.jpg?watermark/1/image/aHR0cDovL3N0YXRpYy5uYmxhLmNuLzEzMTAxMTYxMDktMi5wbmc=/dissolve/100/gravity/SouthEast/dx/10/dy/0" height="50px" width="50px" alt="php 字符串strrev 函数" /></a></span><a href="https://www.nbla.cn/article/_VmyK52bwv0LZbDR.html">php 字符串strrev 函数</a> <i>Nov 12, 2016</i> </li><li><a href="https://www.nbla.cn/article/_KXV57MAXxpq4BbO.html">php中microtime函数记录代码执行时间</a> <i>Dec 20, 2016</i> </li> </ul> </div> </div> <div class="one_half last"> <div class="popular-posts-area"> <ul class="recent_posts_list"> <li><a href="https://www.nbla.cn/article/_wW4YKL8XzALQVgN.html">php delete 函数</a> <i>Nov 24, 2016</i> </li><li><a href="https://www.nbla.cn/article/_ZKNWxLrpVRM3B98.html">php函数setcookie用法详解</a> <i>Jun 07, 2018</i> </li><li><a href="https://www.nbla.cn/article/_bKYk1q6K1xMnBAX.html">php中 inlcude()性能对比详解 - php函数</a> <i>Dec 17, 2016</i> </li><li><span><a href="https://www.nbla.cn/article/_worJG2P5nPL6ZYO.html"><img src="http://static.nbla.cn/Uploads/image/2017-03-31/14909405954522.jpg?watermark/1/image/aHR0cDovL3N0YXRpYy5uYmxhLmNuLzEzMTAxMTYxMDktMi5wbmc=/dissolve/100/gravity/SouthEast/dx/10/dy/0" height="50px" width="50px" alt="PHP的unset()函数的实际效果" /></a></span><a href="https://www.nbla.cn/article/_worJG2P5nPL6ZYO.html">PHP的unset()函数的实际效果</a> <i>Nov 07, 2016</i> </li> </ul> </div> </div> </div> </div> </div> <div class="clearfix margin_top7"></div> <div class="footer1 bggraph1"> <div class="container"> <div class="one_fourth"> <ul class="faddress"> <li id="myfooter"> <div class="logo"><a href="http://www.nbla.cn" id="logo"><span></span></a></div> </li> <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。</li> <li>在这里……</li> </ul> </div> <div class="one_fourth"> <div class="ftags"> <h3 class="nocaps">Tags</h3> <ul> <li><a href="#">共同学习</a></li> <li><a href="#">发现</a></li> <li><a href="#"> 收藏</a></li> <li><a href="#"> 分享</a></li> <li><a href="#"> 共享</a></li> <li><a href="#">共鸣</a></li> <li><a href="#">专注</a></li> <li><a href="#">共同进步</a></li> </ul> </div> </div> <div class="one_fourth"> <div class="twitter_feed"> <h3 class="nocaps">About</h3> <div class="left"><i class="fa fa-twitter fa-lg"></i></div> <div class="right"> &nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:;" target="_blank">特别鸣谢</a>&nbsp;&nbsp;&nbsp;&nbsp; <a href="javascript:;" target="_blank">使用协议</a><br/><br/> &nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:;" target="_blank">意见反馈</a>&nbsp;&nbsp;&nbsp;&nbsp; <a href="javascript:;" target="_blank">网站投稿</a> </div> </div> </div> <div class="one_fourth last"> <!-- <h3 class="nocaps">We&nbsp;&nbsp;Group</h3> --> <img src="https://www.nbla.cn/Template/Home/images/php_wx.jpg" style="float:left;width: 110px; text-align: center;"> <img src="https://www.nbla.cn/Template/Home/images/php_xcx.jpg" style="float:left;width: 110px; text-align: center;margin-left: 20px"> </div> </div> </div> </div> <div class="clearfix"></div> <div class="copyright_info"> <div class="container"> <div> 网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱&nbsp;&nbsp;<a href="https://beian.miit.gov.cn" target="_blank">冀ICP备18013926号-2</a> </div> </div> </div> <a href="#" class="scrollup">Scroll</a> </div> <script type="text/javascript" src="https://www.nbla.cn/Template/Home/js/universal/jquery.js"></script> <script src="https://www.nbla.cn/Template/Home/js/style-switcher/jquery-1.js"></script> <script src="https://www.nbla.cn/Template/Home/js/style-switcher/styleselector.js"></script> <script src="https://www.nbla.cn/Template/Home/js/mainmenu/bootstrap.min.js"></script> <script src="https://www.nbla.cn/Template/Home/js/scrolltotop/totop.js" type="text/javascript"></script> <script type="text/javascript" src="https://www.nbla.cn/Template/Home/js/mainmenu/sticky.js"></script> <script type="text/javascript" src="https://www.nbla.cn/Template/Home/js/mainmenu/modernizr.custom.75180.js"></script> <script type="text/javascript" src="https://www.nbla.cn/Template/Home/js/lightbox/jquery.fancybox.js"></script> <script type="text/javascript" src="https://www.nbla.cn/Template/Home/js/lightbox/custom.js"></script> <script src="https://www.nbla.cn/Template/Home/js/mainmenu/fhmm.js"></script> <script type="text/javascript"> $('.dropdown-toggle').dropdownHover().dropdown(); $(document).on('click', '.fhmm .dropdown-menu', function (e) { e.stopPropagation() }); </script> <script type="text/javascript" src="https://www.nbla.cn/Template/Home/js/customs.js"></script> <script src="https://www.nbla.cn/Template/Home/js/form/jquery.form.min.js"></script> <script> var baseUrl = 'https://www.nbla.cn/ajax/act'; </script> <script type="text/javascript" src="https://www.nbla.cn/Template/Home/js/custom.js"></script> </body> </html>