《PHP从字串中截取一部分,支持使用(*)模糊截取》要点:
本文介绍了PHP从字串中截取一部分,支持使用(*)模糊截取,希望对您有用。如果有疑问,可以联系我们。
有时会有这种需求,就是从一串代码或字符中,根据提供的开始内容和结束内容来截取中间部分。
如果开始和结束内容是固定的,很容易操作,这里不详解。但是如果不是固定的,允许模糊匹配截取,那这里函数就是用于这种需求。
示例代码:$con=<<
示例代码
这是内容标题
内容部分! 维易PHP函数,可以模糊截取一段文字,随意的测试代码,用于测试PHP函数
- 列表
- PHP函数
- 马上测试吧
END;
假如要截取h1下面的span一块,这串代码中,起点可以用,但如果结束部分
PHP代码:$start="
(*)
"; # 或''$end='
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;
}
提取结果:内容部分! 维易PHP函数,可以模糊截取一段文字,随意的测试代码,用于测试PHP函数