Как найти li и ввести ul перед каждым набором li в массиве - PullRequest
0 голосов
/ 11 июля 2020

У меня есть индексированный массив из html тегов, каждый индекс содержит html открывающий и закрывающий тег и его значение. Я хочу изменить некоторые из них, например, я хочу, чтобы теги li были обернуты вокруг них ul. Но с тем же порядком в массиве.

<code>Array
(
[0] => <li>some text</li>
[1] => <pre>text area data
[2] => какое-то значение )

вот как я хочу, чтобы это было

<code> Array
(
[0] => <ul>
[1] => <li>some text</li>
[2] => </ul>
[3] => <pre>text area data
[4] =>
  • некоторое значение
) $ arr2 = []; $ a = 0; foreach ($ arr1 as $ k => $ v) {если ($ a == 0) $ arr2 [] = '
  • ')! == false) {$ arr2 [] = $ v; }

1 Ответ

0 голосов
/ 11 июля 2020

Этот код отслеживает, находится ли ваш в настоящее время в списке или нет, затем для каждого элемента он проверяет, начинается ли он с <li> и состояния.

Если это <li> не в списке , затем он сначала добавляет <ul> и устанавливает состояние, если это не <li> и он находится в списке, то добавляет </ul>.

Чтобы гарантировать закрытие любого списка, после l oop если есть в списке, то закрывает тег ...

$arr2 = [];
$inList = false;
foreach($arr1 as $index => $value)
{
    if ( substr(trim($value), 0, 4) == "<li>" ) {
        if ( ! $inList )    {
            $arr2[] = '<ul>';
            $inList = true;
        }
    }
    else    {
        if ( $inList )  {
            $arr2[] = '</ul>';
            $inList = false;
        }
    }
    $arr2[] = $value;
}
if ( $inList )  {
    $arr2[] = '</ul>';
    $inList = false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...