Задать вопрос
@eternalfire

Как удалить div если внутри есть нужный текст?

Допустим внутри есть текст 'Ещё больше интересного и полезного' так вот если в div есть такой текст его нужно удалить. Использую phpQuery. Помогите люди добрые

<?
$hh = file_get_contents('ссылка');

$document = phpQuery::newDocument($hh);

$hb = $document->find('div.b-pb-publication-body')->removeAttr('class');

foreach ($hb as $text) {
    $pqtext = pq($text);
    $pqtext->find('p')->removeAttr('class');
    $pqtext->find('div')->removeAttr('class');
    $pqtext->find('div > figure')->removeAttr('class');
    $pqtext->find('div > figure > img')->removeAttr('class');
};
$detail_text_res = $hb->html(); // $detail_text_res - текст статьи
print_r($detail_text_res);
?>


Есть div внутри div.b-pb-publication-body в котором бывает нужная информация, а бывает, если содержит текст 'Ещё больше интересного и полезного' - ненужная/
  • Вопрос задан
  • 344 просмотра
Подписаться 1 Простой 2 комментария
Решения вопроса 1
@eternalfire Автор вопроса
решено

<?
$hh = file_get_contents('ссылка');

$document = phpQuery::newDocument($hh);

$hb = $document->find('div.b-pb-publication-body')->removeAttr('class');

foreach ($hb as $text) {
    $pqtext = pq($text);
    $pqtext->find('p')->removeAttr('class');
$pqtext->find("div.b-pb-publication-body__background:contains('больше')")->remove();
    $pqtext->find('div')->removeAttr('class');
    $pqtext->find('div > figure')->removeAttr('class');
    $pqtext->find('div > figure > img')->removeAttr('class');
};
$detail_text_res = $hb->html(); // $detail_text_res - текст статьи
print_r($detail_text_res);
?>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@BorisKorobkov Куратор тега PHP
Web developer
  1. Найти нужный текст
  2. Найти его родителя
  3. Удалить его (родителя)
  4. ...
  5. Профит
Ответ написан
Комментировать
one_day
@one_day
не проверял, но как-то так:
$("div").each(function(){
  if($(this).text()=='Ещё больше интересного и полезного'){
      $(this).remove();
  }
});
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы