解析字符串到数组

    public function parseStringToArray($str)
    {
        $preg = '/(["])(?:(?!\1).)*?\1/';
        preg_match_all($preg, $str, $pat_array);
        $preg = $pat_array[0] ?? [];
        if (empty($preg)) {
            return explode(',', $str);
        }

        $return = [];
        foreach ($preg as $value) {
            //去除最左边英文,
            if (!empty($str) && mb_substr($str, 0, 1) == ',') {
                $str = mb_substr($str, 1);
            }
            $index = mb_strpos($str, $value);
            $flag_top = mb_substr($str, 0, $index);
            if (!empty($flag_top)) {
                //去除最右边英文,
                if (mb_substr($str, mb_strlen($flag_top) - 1, 1) == ',') {
                    $flag_top = mb_substr($flag_top, 0, -1);
                }
                $return = array_merge($return, explode(',', $flag_top));
                $str = mb_substr($str, mb_strlen($flag_top));
            }
            $return = array_merge($return, [trim($value, '"')]);
            $str = mb_substr($str, mb_strlen($value) + 1);
        }
        //去除最左边英文,
        if (!empty($str) && mb_substr($str, 0, 1) == ',') {
            $str = mb_substr($str, 1);
            if (!empty($str)) {
                $return = array_merge($return, explode(',', $str));
            }
        }
        return $return;
    }


    public function handle()
    {
        $str = '"新部门,借",1,融锋86(RF)11,2,,"新部门,",888,,",ww,11"';
        $this->parseStringToArray($str);
    }

特殊字符串:字符串中间存在分隔符;

解析结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值