Разделите и извлеките текстовое содержимое из каждого вложенного элемента div на странице.

У меня есть HTML из URL. Чего я хочу добиться, так это извлекать только текстовое содержимое внутри div. Любая идея, если она может быть достигнута. Структура будет похожа на эту

<div class="first">
  <div class="second">
     Some content inside second div
    <div class="third">
      Some more content inside third div
    </div>
  </div>
</div>

Когда я извлекаю контент, я хочу получить текстовый контент внутри массива примерно так

Array(
 [first]=>
 [second]=>Some content inside second div
 [third]=>Some more content inside third div
);

Я пытаюсь добиться этого с помощью strip_tags, но почему-то я не понимаю, как разделить его и добавить в массив. У кого может быть идея, помогите.


person SanketR    schedule 29.11.2015    source источник


Ответы (1)


<?php
function clearArray($arr) {
    if(is_array($arr)) {
        foreach($arr as $element) {
            $cont=trim($element); //make sure to have cr/lf parts removed (difference between line seperator)
            if(!empty($cont)) {
                $newArray[]=$cont;
            }
        }
        return $newArray;
    }
    return false;
}
$content='<div class="first">
  <div class="second">
     Some content inside second div
    <div class="third">
      Some more content inside third div
    </div>
  </div>
</div>';
$strippedContent=strip_tags($content);
$content=explode("\n", $strippedContent);
$content=clearArray($content);
print_r($content);

Это выведет следующее:

Array ( [0] => Some content inside second div [1] => Some more content inside third div )

Если вы извлекаете эту информацию с чужой страницы, я настоятельно рекомендую вам использовать DOMDocument и xpath для получения элементов.

person zeropingtomars    schedule 29.11.2015
comment
Работает как шарм... Спасибо. :) - person SanketR; 30.11.2015