Как в данном варианте получить четвертый параграф?

Ссылка скопирована
16 января 2026 1 ответ

Вот пример:

<p class="p-1"></p><p class="p-2"></p> <div class="wrap"><p class="p-3"></p></div><p class="p-4"></p><p class="p-5"></p> и т.д.

<p class="p-1"></p><p class="p-2"></p> <div class="wrap"><p class="p-3"></p></div><p class="p-4"></p><p class="p-5"></p> и т.д.

Как в данном варианте можно получить только 4 параграф?
Использовал такое регулярное выражение, но он выбирает все после дива: (?<=</w>).+</?p[^>]*>(.*?)</p>
Дело в том, что верстка и расположение классов могут отличаться, но всегда нужно получать 4 параграф.

Дополнительно:

Сформулировать, какими "разными" могут быть верстка и классы и что такое "пятый параграф".
Возможно, имеет смысл не регулярка, а разбор DOM, классы для этого есть в РНР.

  • Adamos, просто эта верстка находится в массиве.
  • Genri_Rus, это что-то меняет?
  • регулярки для разбора html плохой вариант. Используйте DomDocument или PhpQuery
  • Сергей delphinpro, динамика верстки и расположение классов могут отличаться, но всегда нужно получать 4 параграф.
    Допустим пример данного разбора DOM возможен?
  • Genri_Rus, возможен.
  • Stalker_RED, а вот в моем примере как это можно правильно сделать?
    Ведь с помощью метода getElementsByTagName я получу все параграфы, а мне нужно только четвертый.
  • Можно explode сделать по </p>
    Забрать параграф и сделать strip_tags
  • Genri_Rus, вы шутите?
    Вы всерьёз спрашиваете, как из готового списка получить элемент по номеру? Пусть даже тупым перебором?
  • Genri_Rus, ты можешь при помощи встроенного DOM получать всегда 4 параграф, получаешь массив всех и берешь [3] - готово
  • &lt;?php $html = &lt;&lt;&lt;HTML &lt;p class="p-1"&gt;p1&lt;/p&gt;&lt;p class="p-2"&gt;p2&lt;/p&gt; &lt;div class="wrap"&gt;&lt;p class="p-3"&gt;p3&lt;/p&gt;&lt;/div&gt;&lt;p class="p-4"&gt;p4&lt;/p&gt;&lt;p class="p-5"&gt;p5&lt;/p&gt; HTML;  preg_match_all('!&lt;p[^&gt;]{0,}&gt;(.*?)&lt;/p&gt;!si', $html, $out);  var_dump($out[0][3]);

    &lt;?php $html = &lt;&lt;&lt;HTML &lt;p class="p-1"&gt;p1&lt;/p&gt;&lt;p class="p-2"&gt;p2&lt;/p&gt; &lt;div class="wrap"&gt;&lt;p class="p-3"&gt;p3&lt;/p&gt;&lt;/div&gt;&lt;p class="p-4"&gt;p4&lt;/p&gt;&lt;p class="p-5"&gt;p5&lt;/p&gt; HTML; preg_match_all('!&lt;p[^&gt;]{0,}&gt;(.*?)&lt;/p&gt;!si', $html, $out); var_dump($out[0][3]);

    если нужно внутреннее содержимое 4 параграфа то соотв-но достаём его из $out[1][3]

    • Спасибо большое.
    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Алексей Денисов Ответ

    Для получения четвертого параграфа на странице можно использовать следующий код:

    $html = file_get_contents('http://www.example.com/page.html');
    $doc = new DOMDocument();
    $doc-&gt;loadHTML($html);
     
    $paragraphs = $doc-&gt;getElementsByTagName('p');
    if ($paragraphs-&gt;length &gt;= 4) {
        $fourthParagraph = $paragraphs-&gt;item(3)-&gt;nodeValue;
        echo $fourthParagraph;
    } else {
        echo 'Fourth paragraph not found';
    }

    $html = file_get_contents('http://www.example.com/page.html'); $doc = new DOMDocument(); $doc-&gt;loadHTML($html); $paragraphs = $doc-&gt;getElementsByTagName('p'); if ($paragraphs-&gt;length &gt;= 4) { $fourthParagraph = $paragraphs-&gt;item(3)-&gt;nodeValue; echo $fourthParagraph; } else { echo 'Fourth paragraph not found'; }

    В этом коде мы сначала получаем HTML-код страницы с помощью функции file_get_contents, затем загружаем его в объект DOMDocument. Далее мы находим все теги параграфов на странице с помощью метода getElementsByTagName и проверяем, достаточно ли параграфов на странице для получения четвертого. Если да, то выводим содержимое четвертого параграфа, иначе выводим сообщение о том, что четвертый параграф не найден.

    Примечание: Для работы этого кода необходимо включить поддержку DOM в PHP, убедившись, что расширение php_domxml установлено и включено в конфигурации PHP.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно