求解决一个字符串分割的问题

#本科&硕士@博士-教授
我想把上面这个字符串变成下面代码描述的这样,应该如何操作啊

$data[0][0] = '#';
$data[0][1] = '本科';
$data[1][0] = '&';
$data[1][1] = '硕士';
$data[2][0] = '@';
$data[2][1] = '博士';
$data[3][0] = '-';
$data[3][1] = '教授';
QueuingAnt
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
巴啦啦
最佳答案
        $str = '#本科 & 硕士 @博士 - 教授';
        $limit1 = array('#', '&', '@', '-');
        $limit2 = array('$#$', '$&$', '$@$', '$-$');
        $str2 = str_replace($limit1, $limit2, $str);
        $arr = array();
        $arr1 = array_values(array_filter(explode('$', $str2)));
        foreach ($arr1 as $k => $v) {
            if ($k % 2 == 0) {
                $arr[] = array($v, $arr1[$k + 1]);
            }
        }
        print_r($arr);
4年前 评论
QueuingAnt (楼主) 4年前
讨论数量: 2
巴啦啦
        $str = '#本科 & 硕士 @博士 - 教授';
        $limit1 = array('#', '&', '@', '-');
        $limit2 = array('$#$', '$&$', '$@$', '$-$');
        $str2 = str_replace($limit1, $limit2, $str);
        $arr = array();
        $arr1 = array_values(array_filter(explode('$', $str2)));
        foreach ($arr1 as $k => $v) {
            if ($k % 2 == 0) {
                $arr[] = array($v, $arr1[$k + 1]);
            }
        }
        print_r($arr);
4年前 评论
QueuingAnt (楼主) 4年前

使用正则的方式:

$string = '#本科 & 硕士 @博士 - 教授';
$matches = [];
preg_match_all('/([#|&|@|\-])([^#|&|@|\-]*)/', $string, $matches);

$signArr = array_map('trim', $matches[1]);
$titleArr = array_map('trim', $matches[2]);
# 在这以下的代码你可以自由发挥了
$data = [];
$minCount = min(count($signArr), $titleArr);
for ($i=0; $i<$minCount; $i++)
{
    $data[] = [
        $signArr[$i],
        $titleArr[$i],
    ];
}

echo '<pre>';
print_r($data);

输出结果

Array
(
    [0] => Array
        (
            [0] => #
            [1] => 本科
        )

    [1] => Array
        (
            [0] => &
            [1] => 硕士
        )

    [2] => Array
        (
            [0] => @
            [1] => 博士
        )

    [3] => Array
        (
            [0] => -
            [1] => 教授
        )

)
4年前 评论
QueuingAnt (楼主) 4年前
yichengo (作者) 4年前
QueuingAnt (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!