Поиск по этому блогу

среда, 30 сентября 2020 г.

PHP поиск данных в DOM по классу

 Здравствуйте!


К сожалению при работе с DOM в PHP нет возможности сделать выборку данных по имени класса. Благо всё уже придумано до нас и есть хорошо работающий код:

function getElementsByClassName($dom, $ClassName, $tagName=null) {

    if($tagName){

        $Elements = $dom->getElementsByTagName($tagName);

    }else {

        $Elements = $dom->getElementsByTagName("*");

    }

    $Matched = array();

    for($i=0;$i<$Elements->length;$i++) {

        if($Elements->item($i)->attributes->getNamedItem('class')){

            if($Elements->item($i)->attributes->getNamedItem('class')->nodeValue == $ClassName) {

                $Matched[]=$Elements->item($i);

            }

        }

    }

    return $Matched;

}


Пример использования:


$text = '<span class="js-item-price" itemprop="price" content="16000">16 000</span>';

$dom = new DOMDocument;

@$dom->loadHTML($text);

$finded= getElementsByClassName($dom, 'js-item-price', 'span');

$data = $finded[0]->getAttribute('content');

echo $data;


Пример выведет 16000 в качестве ответа.

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

Отправить комментарий

Поделитесь своим мнением.