eugene-chernogradski/link-preview

该软件包已被废弃且不再维护。作者建议使用 kasp3r/link-preview 软件包。

PHP 的链接预览生成

v1.3.4 2019-01-08 11:22 UTC

README

Build Status Code Climate Test Coverage Total Downloads Latest Stable Version Latest Unstable Version License

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

最初基于 kasp3r/link-preview,该软件包似乎已被废弃。

包含与 Laravel 5 的集成

依赖项

  • PHP >= 5.5
  • Guzzle >= 6.1
  • Symfony DomCrawler >= 3.0

通过 Composer 安装

要安装,只需运行

composer require dusterio/link-preview

或手动将其添加到 composer.json

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

直接使用

use Dusterio\LinkPreview\Client;

$previewClient = new Client('https://www.boogiecall.com/en/Melbourne');

// Get previews from all available parsers
$previews = $previewClient->getPreviews();

// Get a preview from specific parser
$preview = $previewClient->getPreview('general');

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

输出

array(4) {
  ["cover"]=>
  string(94) "https://cdn.boogiecall.com/media/images/872398e3d9598c494a2bed72268bf018_1440575488_7314_s.jpg"
  ["images"]=>
  array(8) {
    [0]=>
    string(94) "https://cdn.boogiecall.com/media/images/872398e3d9598c494a2bed72268bf018_1440575488_7314_s.jpg"
    [1]=>
    string(94) "https://cdn.boogiecall.com/media/images/b18970cd4c808f4dcdf7c319779ab9c6_1457347623_2419_s.jpg"
  }
  ["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."
}

超时和错误

// Default connect timeout is 5 seconds, you can change it to anything you want
$previewClient->getParser('general')->getReader()->config(['connect_timeout' => 3.14]);

// Default maximum redirect count is 10, but you can change it too
$previewClient->getParser('general')->getReader()->config(['allow_redirects' => ['max' => 10]]);

// If there is a network error (DNS, connect, etc), we throw ConnectionErrorException
try {
    $previews = $previewClient->getPreviews();
} catch (\Dusterio\LinkPreview\Exceptions\ConnectionErrorException $e) {
    echo "Oh no!";
}

YouTube 示例

use Dusterio\LinkPreview\Client;

$previewClient = new LinkPreview('https://www.youtube.com/watch?v=v1uKhwN6FtA');

// Only parse YouTube specific information
$preview = $previewClient->getPreview('youtube');

var_dump($preview->toArray());

输出

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"
}

Laravel 5 中的使用

// Add in your config/app.php

'providers' => [
    '...',
    'Dusterio\LinkPreview\Integrations\LaravelServiceProvider',
];

'aliases' => [
    '...',
    'Preview'    => 'Dusterio\LinkPreview\Integrations\LaravelFacade',
];

// Set target url
Preview::setUrl('https://www.boogiecall.com');

// Get parsed HTML tags as a plain array
Preview::getPreview('general')->toArray();

// In case of redirects, see what the final url was
echo Preview::getUrl();

待办事项

  1. 添加更多单元和集成测试
  2. 更新文档
  3. 添加更多解析器

许可证

MIT 许可证 (MIT) 版权所有 (c) 2016 Denis Mysenko

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

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

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