marcelklehr/link-preview

支持Laravel的PHP链接预览生成器

v3.0.6 2022-02-27 11:43 UTC

README

一个PHP类,它消耗一个HTTP(S)链接并返回一个包含预览信息的数组。想象一下Facebook分享——每次你粘贴链接时,它都会跳转到指定的页面并获取一些详细信息。

最初基于kasp3r/link-preview,该库看起来已被放弃。

这个分支特别之处在于它不带任何特定的HTTP实现,而是允许你注入一个PSR-17工厂和一个PSR-18客户端。这让你可以自由选择使用任何你喜欢的工具。

依赖关系

  • PHP >= 7.0
  • Symfony DomCrawler >= 3.0

通过Composer安装

要安装,只需运行

composer require dusterio/link-preview

或者手动添加到composer.json

{
    "require": {
        "marcelklehr/link-preview": "~1.2"
    }
}

直接使用

use Marcelklehr\LinkPreview\Client;

$previewClient = new Client(/*your http implementation here*/);

// Get previews from all available parsers
$previews = $previewClient->getLink('https://www.boogiecall.com/en/Melbourne')->getPreviews();

// Only get preview data from specific parser
$preview = $previewClient->getPreview('general');

// Convert output to array
$preview = $preview->toArray();

输出

array(4) {
  ["basic"]=>array(2){
    ["title"]=>
    string(44) "Events, parties & live concerts in Melbourne"
    ["description"]=>
    string(107) "List of events in Melbourne. Nightlife, best parties and concerts in Melbourne, event listings and reviews."
  }
  ["image"]=>array(2){
    ["large"]=>
    string(94) "https://cdn.boogiecall.com/media/images/872398e3d9598c494a2bed72268bf018_1440575488_7314_s.jpg"
    ["small"]=>
    string(94) "https://cdn.boogiecall.com/media/images/872398e3d9598c494a2bed72268bf018_1440575488_7314_s.jpg"
  }
}

YouTube示例

use Marcelklehr\LinkPreview\Client;

$previewClient = new Client(/*your http implementation here*/);

// Only parse YouTube specific information
$preview = $previewClient->getLink('https://www.youtube.com/watch?v=v1uKhwN6FtA')->getPreview('youtube');

var_dump($preview->toArray());

输出

array(2) {
  ["video"]=>array(2) {
    ["embed"]=>
    string(128) "<iframe id="ytplayer" type="text/html" width="640" height="390" src="http://www.youtube.com/embed/v1uKhwN6FtA" frameborder="0"/>"
    ["id"]=>
    string(11) "v1uKhwN6FtA"
  }
}

许可协议

MIT许可(MIT)版权所有(c)2016 Denis Mysenko 版权所有(c)2018 Marcel Klehr

特此授予任何人免费获取此软件及其相关文档副本(以下简称“软件”)的权利,以不受限制地处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许向提供软件的个人提供此类权利,但须遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“现状”提供,不提供任何形式的保证,明示或暗示,包括但不限于适销性、适用于特定目的和无侵权性保证。在任何情况下,作者或版权所有者均不对因合同、侵权或其他行为而产生的任何索赔、损害或其他责任负责,无论该索赔、损害或其他责任源于、产生于或与软件或软件的使用或其他交易有关。