《PHP从字串中截取一部分,支持使用(*)模糊截取》要点:
本文介绍了PHP从字串中截取一部分,支持使用(*)模糊截取,希望对您有用。如果有疑问,可以联系我们。
有时会有这种需求,就是从一串代码或字符中,根据提供的开始内容和结束内容来截取中间部分。
如果开始和结束内容是固定的,很容易操作,这里不详解。但是如果不是固定的,允许模糊匹配截取,那这里函数就是用于这种需求。
示例代码:
$con=<<<END <h2>示例代码</h2> <div class="pic_show"> <i></i> <img src="http://www.vephp.com/public/images/logo141.png" alt="维易PHP字符串截取函数"> </div> <div class="detail"> <h1>这是内容标题</h1> <span style="display:block; height:125px; overflow:hidden;">内容部分! 维易PHP函数,可以模糊截取一段文字,随意的测试代码,用于测试PHP函数</span> <div class="count clearfix"> <ul> <li>列表<br><span id="hits"></span></li> <li>PHP函数</span></li> <li style="border:none;">马上测试吧</li> </ul> </div> </div> END;
假如要截取h1下面的span一块,这串代码中,起点可以用</h1>,但如果结束部分<div class="count clearfix">,有的是<div class="dd clearfix">有的又是其它,也就是说不固定的,那就要用模糊匹配。
PHP代码:
$start="<h1>(*)</h1>"; # 或'</h1>' $end=' <div class="(*) clearfix">'; echo extract_BoxSplit ($con, $start, $end);
函数extract_BoxSplit:
function extract_BoxSplit( $html ,$startStr, $endStr ) { if(stripos ($startStr, '(*)')===false){ $start = stripos ( $html , $startStr); }else{ $starReg = preg_quote ($startStr); $starReg = str_replace ('#','\#',$starReg); $starReg= str_replace ( ['\(\*\)', '(*)'] ,'.*?', $starReg ); preg_match ( "#{$starReg}#is", $html ,$mStart, PREG_OFFSET_CAPTURE, 0 ); $start= !empty($mStart) ? $mStart[0][1] : false; } if($start===false) { $error = '没有在内容中发现设置的区块起点代码。'; return false; } $start += (stripos ($startStr, '(*)')!==false && !empty($mStart)) ? strlen ($mStart[0][0]) : strlen( $startStr); if(stripos ($endStr, '(*)')===false){ $end = stripos ( $html , $endStr , $start); }else{ $endReg = preg_quote ($endStr); $endReg = str_replace ('#','\#',$endReg); $endReg= str_replace (['\(\*\)', '(*)'],'.*?', $endReg ); preg_match ( "#{$endReg}#is", $html,$mEnd, PREG_OFFSET_CAPTURE, $start ); $end= !empty($mEnd) ? $mEnd[0][1] : false; } if($end===false) { $error = '没有在内容中发现设置的区块终点代码。'; return false; } $str = substr ( $html, $start, $end-$start); return $str; }
提取结果:
<span style="display:block; height:125px; overflow:hidden;">内容部分! 维易PHP函数,可以模糊截取一段文字,随意的测试代码,用于测试PHP函数</span>
转载请注明本页网址:
http://www.vephp.com/jiaocheng/635.html