废话不多说,上结果
对字符串匹配 “[”
运行结果:
函数代码:
//$isFirst用于判断是否是用户调用函数,请传递true
//$strPositionArray参数用于递归使用,用户不要传递这个参数
function matchingString($string,$matchString,$isFirst=false,$strPositionArray=null){
$stringArray = preg_split('/(?<!^)(?!$)/u', $string);
if ($isFirst){
$strPositionArray = array();
}
$strPosition = mb_strpos($string,$matchString);
if (!$strPosition){
return $strPositionArray;
}
$cutString = implode(array_slice($stringArray,$strPosition+1));
array_push($strPositionArray,$strPosition);
$resultArray = $this->matchingString($cutString,$matchString,false,$strPositionArray);
//对返回数据进行位置偏差补偿
if ($isFirst){
$resultArray;
for ($i = count($resultArray)-1;$i>0;$i--){
for ($z = $i-1;$z>=0;$z--){
$resultArray[$i] += $resultArray[$z];
}
$resultArray[$i] += $i;
}
}
return $resultArray;
}
在这里再次强调,一定要为isFirst传入true