protected function parseHtml(LinkInterface $link)
    {
        $images = [];

        try {
            $parser = new Crawler();
	    $parser->addHtmlContent($link->getContent());

            // Parse all known tags
            foreach($this->tags as $tag => $selectors) {
                foreach($selectors as $selector) {
                    if ($parser->filter($selector['selector'])->count() > 0) {
                        if (isset($selector['attribute'])) {
                            ${$tag} = $parser->filter($selector['selector'])->first()->attr($selector['attribute']);
                        } else {
                            ${$tag} = $parser->filter($selector['selector'])->first()->text();
                        }

                        break;
                    }
                }

                // Default is empty string
                if (!isset(${$tag})) ${$tag} = '';
            }

            // Parse all images on this page
            foreach($parser->filter('img') as $image) {
                if (!$image->hasAttribute('src')) continue;
                if (filter_var($image->getAttribute('src'), FILTER_VALIDATE_URL) === false) continue;

                // This is not bulletproof, actual image maybe bigger than tags
                if ($image->hasAttribute('width') && $image->getAttribute('width') < $this->imageMinimumWidth) continue;
                if ($image->hasAttribute('height') && $image->getAttribute('height') < $this->imageMinimumHeight) continue;

                $images[] = $image->getAttribute('src');
            }
        } catch (\InvalidArgumentException $e) {
            // Ignore exceptions
        }

        $images = array_unique($images);

        if (!isset($cover) && count($images)) $cover = $images[0];

        return compact('cover', 'title', 'description', 'images', 'video', 'videoType');
    }
protected function parseHtml(LinkInterface $link)
    {
        $images = [];

        try {
            $parser = new Crawler();
	    $parser->addHtmlContent($link->getContent());

            // Parse all known tags
            foreach($this->tags as $tag => $selectors) {
                foreach($selectors as $selector) {
                    if ($parser->filter($selector['selector'])->count() > 0) {
                        if (isset($selector['attribute'])) {
                            ${$tag} = $parser->filter($selector['selector'])->first()->attr($selector['attribute']);
                        } else {
                            ${$tag} = $parser->filter($selector['selector'])->first()->text();
                        }

                        break;
                    }
                }

                // Default is empty string
                if (!isset(${$tag})) ${$tag} = '';
            }

            // Parse all images on this page
            foreach($parser->filter('img') as $image) {
                if (!$image->hasAttribute('src')) continue;
                if (filter_var($image->getAttribute('src'), FILTER_VALIDATE_URL) === false) continue;

                // This is not bulletproof, actual image maybe bigger than tags
                if ($image->hasAttribute('width') && $image->getAttribute('width') < $this->imageMinimumWidth) continue;
                if ($image->hasAttribute('height') && $image->getAttribute('height') < $this->imageMinimumHeight) continue;

                $images[] = $image->getAttribute('src');
            }
        } catch (\InvalidArgumentException $e) {
            // Ignore exceptions
        }

        $images = array_unique($images);

        if (!isset($cover) && count($images)) $cover = $images[0];

        return compact('cover', 'title', 'description', 'images', 'video', 'videoType');
    }
protected function parseHtml ( LinkInterface $ link ) { $ images = [ ] ; try { $ parser = new Crawler ( ) ; $ parser -> addHtmlContent ( $ link -> getContent ( ) ) ; // Parse all known tags foreach ( $ this -> tags as $ tag => $ selectors ) { foreach ( $ selectors as $ selector ) { if ( $ parser -> filter ( $ selector [ 'selector' ] ) -> count ( ) > 0 ) { if ( isset ( $ selector [ 'attribute' ] ) ) { $ { $ tag } = $ parser -> filter ( $ selector [ 'selector' ] ) -> first ( ) -> attr ( $ selector [ 'attribute' ] ) ; } else { $ { $ tag } = $ parser -> filter ( $ selector [ 'selector' ] ) -> first ( ) -> text ( ) ; } break ; } } // Default is empty string if ( ! isset ( $ { $ tag } ) ) $ { $ tag } = '' ; } // Parse all images on this page foreach ( $ parser -> filter ( 'img' ) as $ image ) { if ( ! $ image -> hasAttribute ( 'src' ) ) continue ; if ( filter_var ( $ image -> getAttribute ( 'src' ) , FILTER_VALIDATE_URL ) === false ) continue ; // This is not bulletproof, actual image maybe bigger than tags if ( $ image -> hasAttribute ( 'width' ) && $ image -> getAttribute ( 'width' ) < $ this -> imageMinimumWidth ) continue ; if ( $ image -> hasAttribute ( 'height' ) && $ image -> getAttribute ( 'height' ) < $ this -> imageMinimumHeight ) continue ; $ images [ ] = $ image -> getAttribute ( 'src' ) ; } } catch ( \ InvalidArgumentException $ e ) { // Ignore exceptions } $ images = array_unique ( $ images ) ; if ( ! isset ( $ cover ) && count ( $ images ) ) $ cover = $ images [ 0 ] ; return compact ( 'cover' , 'title' , 'description' , 'images' , 'video' , 'videoType' ) ; }
Extract required data from html source
@param LinkInterface $link
@return array
Extract required data from html source