PHP code example of osmuhin / html-meta

1. Go to this page and download the library: Download osmuhin/html-meta library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

osmuhin / html-meta example snippets


use Osmuhin\HtmlMeta\Crawler;

$meta = Crawler::init(url: 'https://google.com')->run();

echo $meta->title; // Google

$html = <<<END
<html lang="en">
    <head>
        <title>Google</title>
        <meta charset="UTF-8">
        <link rel="icon" href="/favicon.ico">
    </head>
</html>
END;

$meta = Crawler::init(html: $html, url: 'https://google.com')->run();

$icon = $meta->favicon->icons[0];

echo $icon->url; // https://google.com/favicon.ico

$request = new \GuzzleHttp\Psr7\Request('GET', 'https://google.com');

$meta = Crawler::init(request: $request)->run();

$client = new \GuzzleHttp\Client([
    'timeout' => 5,
    'allow_redirects' => false,
]);

$meta = Crawler::init(url: 'https://example.com')
    ->setGuzzleClient($client)
    ->run();

$meta = Crawler::init(html: $html, url: 'https://example.com')->run();

$meta->openGraph->article->publishedTime; // article:published_time
$meta->openGraph->book->isbn;             // book:isbn
$meta->openGraph->profile->firstName;     // profile:first_name
$meta->openGraph->other;                  // unmapped og:* keys

$meta = Crawler::init(html: $html, url: 'https://example.com')->run();

$meta->jsonLd->nodes[0]->type;       // @type
$meta->jsonLd->nodes[0]->id;         // @id
$meta->jsonLd->nodes[0]->inLanguage; // inLanguage
$meta->jsonLd->nodes[0]->url;        // url
$meta->jsonLd->nodes[0]->data;       // full decoded object

$crawler = Crawler::init(url: 'https://google.com');
$crawler->config
    ->dontProcessUrls()
    ->dontUseTypeConversions()
    ->processUrlsWith('https://yandex.ru')
    ->dontUseDefaultDistributorsConfiguration();

        $crawler->xpath = '//html|//html/head/link|//html/head/meta|//html/head/title|//script';
        

public function canHandle(): bool
{

}

public function handle(): void
{

}

class TitleDistributor extends \Osmuhin\HtmlMeta\Distributors\AbstractDistributor
{
    public function canHandle(): bool
    {
        return $this->el->name === 'title';
    }

    public function handle(): void
    {
        $this->meta->title = $this->el->innerText;
    }
}

use Osmuhin\HtmlMeta\Distributors\TitleDistributor;

class MyCustomTitleDistributor extends TitleDistributor
{
    public function handle(): void
    {
        $this->meta->title = 'Prefix for title ' . $this->el->innerText;
    }
}

$crawler = Crawler::init(url: 'https://google.com');
$crawler->distributor->setSubDistributor(
    MyCustomTitleDistributor::class,
    TitleDistributor::class
);

$meta = $crawler->run();
$meta->title === 'Prefix for title Google';

$crawler = Crawler::init(url: 'https://google.com');
$crawler->xpath = '//html/head/title';
$crawler->config->dontUseDefaultDistributorsConfiguration();

$crawler->distributor->useSubDistributors(
    MyCustomTitleDistributor::init($crawler->context)
);

$meta = $crawler->run();

$crawler->distributor->useSubDistributors(
    \Osmuhin\HtmlMeta\Distributors\HtmlDistributor::init($crawler->context),
    \Osmuhin\HtmlMeta\Distributors\TitleDistributor::init($crawler->context),
    \Osmuhin\HtmlMeta\Distributors\MetaDistributor::init($crawler->context)->useSubDistributors(
        \Osmuhin\HtmlMeta\Distributors\HttpEquivDistributor::init($crawler->context),
        \Osmuhin\HtmlMeta\Distributors\TwitterDistributor::init($crawler->context),
        \Osmuhin\HtmlMeta\Distributors\OpenGraphDistributor::init($crawler->context)
    ),
    \Osmuhin\HtmlMeta\Distributors\LinkDistributor::init($crawler->context)->useSubDistributors(
        \Osmuhin\HtmlMeta\Distributors\LinkRelDistributor::init($crawler->context)->useSubDistributors(
            \Osmuhin\HtmlMeta\Distributors\FaviconDistributor::init($crawler->context)
        )
    ),
    \Osmuhin\HtmlMeta\Distributors\JsonLdDistributor::init($crawler->context)
);