php将字符串拆分成数组并输出为指定样式的结构

$string = “123.jpg@123#456.jpg@456#789.jpg@789#abc.jpg@abc”
用PHP将用@和#相连的上述字符串拆分并输出为以下形式

<div class="card actress">
    <a href="/card/123"><img class="xx" src="123.jpg">a>
    <div class="card-body">
        <h6 class="card-title"><a href="/card/123">123a>h6>
    div>
div>

<div class="card actress">
        <a href="/card/456"><img class="xx" src="456.jpg">a>
        <div class="card-body">
            <h6 class="card-title"><a href="/card/456">456a>h6>
        div>
div>

<div class="card actress">
        <a href="/card/789"><img class="xx" src="789.jpg">a>
        <div class="card-body">
            <h6 class="card-title"><a href="/card/789">789a>h6>
        div>
div>

<div class="card actress">
        <a href="/card/abc"><img class="xx" src="abc.jpg">a>
        <div class="card-body">
            <h6 class="card-title"><a href="/card/abc">abca>
        h6>
        div>
div>

我猜大概是下面这样写,但是就是写不出来想要的结果。

$string = “123.jpg@123#456.jpg@456#789.jpg@789#abc.jpg@abc”
$arr = preg_split("/(#l@)/" ,$string);
$length = strlen($arr);
$thisWord = array();
for ($i=0; $i<$length; $i++) {
$thisWord[$i] = $string[$i];
}

可以参考如下代码

$string = "123.jpg@123#456.jpg@456#789.jpg@789#abc.jpg@abc";
$items = explode("#", $string);
foreach($items as $item) {
    list($img, $name) = explode("@", $item);
    echo '<div class="card actress">';
    echo '<a href="/card/' . $name . '"><img class="xx" src="' . $img . '"></a>';
    echo '<div class="card-body">';
    echo '<h6 class="card-title"><a href="/card/' . $name . '">' . $name . '</a></h6>';
    echo '</div></div>';
}
$string = "123.jpg@123#456.jpg@456#789.jpg@789#abc.jpg@abc";
$arr = preg_split("/[#@]/", $string);
for ($i = 0; $i < count($arr); $i++) {
    echo  $arr[$i] . "\n";
}

/////////////

$string = "123.jpg@123#456.jpg@456#789.jpg@789#abc.jpg@abc";
$arr = preg_split("/#/", $string);

for ($i = 0; $i < count($arr); $i++) {
    echo "节点" . $arr[$i] . "\n";
    $arr2 = preg_split("/@/", $arr[$i]);
    for ($j = 0; $j < count($arr2); $j++) {
        echo $arr2[$j] . "\n";
    }
}