php递归匹配字符串 支持中文(返回所有符合要求的字符串下标)

废话不多说,上结果
对字符串匹配 “[”
在这里插入图片描述
运行结果:
在这里插入图片描述

函数代码:

	//$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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值