jedkirby/tweet-entity-linker

将Twitter API推文实体(如URL、标签和用户提及)转换为相应的HTML实体。

1.3.0 2022-05-25 09:10 UTC

This package is auto-updated.

Last update: 2024-09-25 13:54:16 UTC


README

Author Build Status Test Coverage StyleCI Packagist Packagist

Tweet Entity Linker是一个非常简单的包,需要最少的设置。它旨在仅将推文的文本及其实体转换为HTML富文本字符串,从而实现链接URL、用户提及和标签。

安装

此包可以通过Composer安装

$ composer require jedkirby/tweet-entity-linker

它需要 PHP >= 5.6.4

用法

以下指南假设您已将类Jedkirby\TweetEntityLinker\Tweet导入到您的命名空间中。

Tweet类需要您传递参数,以便它能够创建链接文本。通常这些参数将是Twitter API端点的响应,如statuses/show/:id,但这不是必需的。

以下伪代码有助于解释使用API响应时需要什么(请参阅示例响应

$request = Api::get('https://api.twitter.com/1.1/statuses/show/123456');

$tweet = Tweet::make(
  $request['text'],
  $request['entities']['urls'],
  $request['entities']['user_mentions'],
  $request['entities']['hashtags'],
  $request['entities']['cashtags']
);

现在Tweet类已经填充了所需的参数,您可以通过调用linkify()方法来返回将URL、用户提及和标签转换为HTML实体的文本

$text = $tweet->linkify();

手动创建参数

您可以手动创建参数,但是它们需要一些特定的属性,以便linkify()方法能够正确地工作,如下所述

参数1:文本

该字段始终是必需的,如果包含URL、用户提及或标签,则相应的参数数组应被填充。以下示例假设我们都有这些

$text = 'This notifies @jedkirby, with the hashtag #Awesome, and the URL https://#/Ed4omjYz.';

参数2:URL

URL参数是一个数组,其中必须包含urldisplay_url字段

$urls = [
  [
    'url'         => 'https://#/Ed4omjYz',
    'display_url' => 'https://jedkirby.com'
  ]
];

参数3:用户提及

用户提及参数是一个数组,其中必须只包含screen_name字段

$mentions = [
  [
    'screen_name' => 'jedkirby'
  ]
];

参数4:标签

标签参数是一个数组,其中必须只包含text字段

$hashtags = [
  [
    'text' => 'Awesome'
  ]
];

参数5:Cashtags

标签参数是一个数组,其中必须只包含text字段

$cashtags = [
  [
    'text' => 'AAPL'  
  ]
];

结果

当将所有上述参数组合在一起时,您将得到以下内容

$tweet = Tweet::make(
  $text,
  $urls,
  $mentions,
  $hashtags,
  $cashtags
);

var_dump($tweet->linkify());

响应如下

string(262) "This notifies @<a href="https://twitter.com/jedkirby" target="_blank">jedkirby</a>, with the hashtag #<a href="https://twitter.com/hashtag/Awesome" target="_blank">Awesome</a>, and the URL <a href="https://#/Ed4omjYz" target="_blank">https://jedkirby.com</a>."

测试

可以在包内部运行单元测试

$ ./vendor/bin/phpunit

贡献

有关详细信息,请参阅CONTRIBUTING

许可证

jedkirby/tweet-entity-linker遵循MIT许可证。有关更多详细信息,请参阅LICENSE文件。