Как добавить пользовательский абзац после x количества абзацев с помощью php

#php #explode #preg-split

#php #разнесите #предварительный раздел

Вопрос:

Я работаю на старом веб-сайте somebodies, он получил этот фрагмент php-кода, который помещает рекламный div внутри содержимого после 4-го абзаца. Все работает нормально. Идея такова: explode редактирование </p> тегов, подсчет их в цикле, добавление нового div после 4-й итерации, объединение всего обратно.

Проблема с этой функцией в том, что она подсчитывает ВСЕ абзацы, а мне нужен только абзац без атрибутов (классы, идентификаторы и т.д.). Только обычные теги clean <p> .

Вот код, который я использую сейчас:

     $paragraphAfter = 4; //Enter number of paragraphs to display ad after.
    $content = explode("</p>", $content);
    $new_content = '';
        for ($i = 0; $i < count($content); $i  ) {
            if ($i == $paragraphAfter) {
                $new_content.= '<div id="adsuser">';
                        $new_content.= '<h3 style="font-weight:bold; margin:0px">'.get_the_title().'</h3>';
                        $new_content.= '<p style="margin:0px; background-color:rgba(255,255,0,0.3); line-height:1.2em">'.get_the_excerpt().'</p>';
                        $new_content.= '</div><div id="sealads"></div>';
            }
        $new_content.= $content[$i] . "</p>";
        }

    wp_reset_postdata();
    $new_content .= '<p style="font-size:145%; text-align:center"><a href="http://www.bayadaim.org.il/פורום-בידיים/" style="">נשארת עם המון שאלות? רוצה לפתוח דיון בנושא?<br/> פורום "בידיים" מחכה לך!</a></p>';
    return $new_content;
  

Я пробовал несколько вещей, в том числе preg_split , но, похоже, я использую это неправильно, потому что я всегда получаю беспорядочный контент без <p> тегов или со слишком большим количеством.

Большое спасибо, Итамар

Комментарии:

1. используйте DOMDocument, это большая часть для изучения, но это правильный путь, а регулярные выражения — нет.

2. не могли бы вы объяснить подробнее, пожалуйста? Что такое DOMDocument и как это может помочь мне с моей проблемой? Спасибо/