Как удалить тег html для элементов, у которых нет идентификатора и класса - PullRequest
0 голосов
/ 25 мая 2020

Короче говоря! Мне нужно удалить все теги SPAN, у которых нет идентификатора и класса. Я нашел селектор запросов DOMXPath, который работает, но я не могу понять, как удалить тег и оставить текст нетронутым.

Примечание о первом foreach: первый foreach зацикливает предложения, поэтому мне нужно чтобы вернуть все обработанное значение обратно в массив $splited_sentences.

foreach ($splited_sentences as $sentence_key => $sentence_value) {
  $html_dom = Html::load($sentence_value);
    $xpath = new DOMXPath($html_dom);

    foreach ($xpath->query('//span[not(@id) and not(@class)]') as $element_key => $element) {
      // Not working Idea, all commented code is just idea to represent needed outcome:
      // $just_text = stip_html($element);
      // $splited_sentences[$sentence_key] = str_replace($element, $just_text);
    }
}

1 Ответ

0 голосов
/ 25 мая 2020

Вы можете использовать strip_tags () для удаления любых тегов html, попробуйте следующий код:

foreach ($splited_sentences as $sentence_key => $sentence_value) {
  $html_dom = Html::load($sentence_value);
    $xpath = new DOMXPath($html_dom);

    foreach ($xpath->query('//span[not(@id) and not(@class)]') as $element_key => $element) {
        $just_text = strip_tags ($element);
        $splited_sentences[$sentence_key] = str_replace($element, $just_text);
    }
}
...