@Goldbergg

Как из строки создать ассоциативный массив?

Есть строка в БД, в которой хранится информация о человеке
<p>1992-Закончила школу</p>
<p>1997-Закончила университет</p>
<p>2000-Закончила еще один университет</p>


Есть блоки, в которые нужно помещать эту информацию

5e6ff63800723065160865.png

Т.е. нужно разделять информацию из тегов на год и текст после "-"
Пробовал так, не выходит
<div class="owl-carousel educationItems">

            <?php
                $array = [];
                $text = str_replace("</p>", "", str_replace("<p>", "</br>", $q->mentor_education));
                while (sizeof($text) > 0) {
                    $data = explode('<br />', $text);
                    $array[$data[0]] = $data[1];
                }
                for ($i=0; $i < count($array); $i++) {
            ?>

                <div class="educationItem">
                    <div class="educationYear"><?= $array[$data[$i]] ?></div>
                    <div class="educationText"><?= $array[$data[$i+1]] ?></div>
                </div>
            <?
                }
            ?>
        </div>
  • Вопрос задан
  • 144 просмотра
Решения вопроса 2
0xD34F
@0xD34F
preg_match_all('~(?<=<p>).+?(?=</p>)~', $str, $match);

$data = array_map(function($n) {
  return explode('-', $n, 2);
}, $match[0]);
Ответ написан
mahmudchon
@mahmudchon
<div class="owl-carousel educationItems">
    <?php
    $array = explode(PHP_EOL, $q->mentor_education);
    foreach($array as $line) {
        $line = strip_tags($line);
        list($year, $text) = explode('-', $line);
        echo '
        <div class="educationItem">
            <div class="educationYear">' . $year . '</div>
            <div class="educationText">' . $text . '</div>
        </div>
        ';
    }
    ?>
</div>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы