hazaveh/php-link-preview

PHP Link Preview library

1.0.4 2023-12-20 21:49 UTC

This package is auto-updated.

Last update: 2024-04-24 22:03:04 UTC


README

68747470733a2f2f68617a617665682e6e65742f77702d636f6e74656e742f75706c6f6164732f7068702d6c696e6b2d707265766965772e6a706567

PHP Link Preview

PHP Link Preview is a small library that can crawl and return the OG & Meta tags of an URL. This can be used in your applications to display a preview of a URL similar to what happens when you paste a link in Social Media sites or Whatsapp.

Current Information

  • title: open graph title, if not found page title will be returned
  • description: open graph description, if not found page description from meta tag is returned
  • image: open graph image
  • icon: favicon (if icon is explicitly specified in the HTML source)

Dependencies

  • PHP >= 8.2
  • Guzzle >= 6
  • Symfony DomCrawler >= 3.0
  • Symfony CssSelector >= 3.0

Installation

Simply run via composer:

composer require hazaveh/php-link-preview

Usage

Create an instance of Client and use parse method to crawl a URL.

use Hazaveh\LinkPreview\Client;  
  
require_once 'vendor/autoload.php';  
  
$client = new Client();  

/**
* Returns an instance of Hazaveh\LinkPreview\Model\Link
* {title, description, image, icon, locale}
*/

$preview = $client->parse("https://hazaveh.net/2023/07/re-inventing-bookmarks-for-teams/");

Using Custom Parser

Out of the box this library comes with a Parser that uses included extractor classes to extract different pieces of information from the page. You can always use a custom parser that implements ParserInterface and have your own logic to extract information from the page.

You are also free to use a Custom Link class which would then include additional information you might want to parse off the website during parsing process.

class CustomParser implements ParserInterface  
{  
    public function parse(string $url): Link  
    {  
        return new Link(url: $url);  
    }  
}  
  
$client = new Client(new CustomParser());

Contribution

Do something cool and add a PR.