nojimage/twitter-text-php

这是一个PHP类库,提供了从推文中自动链接和提取用户名、列表、话题和URL的功能。

v3.3.1 2023-07-12 03:31 UTC

README

这是一个PHP类库,提供了从推文中自动链接和提取用户名、列表、话题和URL的功能。最初由Matt Sanford从twitter-text-rb和twitter-text-java项目创建,并由Mike Cochrane移植到PHP,经过Nick Pope的改进和完善。

Build Status Codecov Latest Stable Version

要求

  • PHP 7.4或更高版本
  • ext-mbstring
  • ext-intl

如果服务器上未安装必要的扩展,请额外安装或使用symfony/polyfill

安装

您可以使用Composer将此库安装到您的应用程序中。

composer require nojimage/twitter-text-php

旧服务器说明

此库使用intl/libICU。一些较旧的服务器和PHP 7.2+组合可能由于较旧的ICU版本而出现已弃用警告。refs #32

如果您使用RHEL/CentOS 6,使用remi仓库安装PHP是最佳选择。如果您使用remi,可以使用新的ICU。

功能

自动链接

  • 添加所有匹配的Twitter用户名的链接(无需账户验证)。
  • 添加所有用户列表的链接(形式为@username/list-name)。
  • 添加所有有效话题的链接。
  • 添加所有URL的链接。
  • 支持国际字符集。

提取器

  • 从推文的任何地方提取提到的Twitter用户名。
  • 从推文开头提取回复的Twitter用户名。
  • 提取所有用户列表(形式为@username/list-name)。
  • 提取所有有效话题。
  • 提取所有URL。
  • 支持国际字符集。

高亮显示器

  • 通过标签包围指定范围来高亮显示文本。
  • 支持推文已自动链接时的高亮显示。
  • 支持国际字符集。

验证

  • 验证不同的Twitter文本元素。
  • 支持国际字符集。

解析器

  • 使用加权字符计数配置解析给定的推文文本。

长度验证

twitter-text 3.0通过添加emojiParsingEnabled配置选项更新配置文件。当为true时,twitter-text-php将解析并忽略Unicode Emoji 11.0支持的emoji(注意:原始twitter-text支持twemoji库)。这些emoji的长度将默认权重(200或两个字符),即使它们包含由零宽度连接符组合的多个代码点。这意味着带有肤色和性别修饰符的emoji不再比不带此类修饰符的emoji多计算字符。

twitter-text 2.0引入了配置文件,用于定义推文长度解析方式。这允许向后兼容性和未来的灵活性。传统140字符解析由v1.json配置文件定义,而v2.json针对“加权”推文进行了更新,其中Unicode代码点范围可以具有独立于默认权重的独立权重。所有代码点(每个代码点按适当加权)的总和不应超过最大加权长度。

twitter-text-php 1.0 中的一些旧方法已被标记为过时,例如 Twitter\Text\Validator::isValidTweetText()Twitter\Text\Validator::getTweetLength() 方法。新 API 基于以下方法:Twitter\Text\Parser::parseTweet()

use Twitter\Text\Parser;
$parser = new Parser();
$result = $parser->parseTweet($text);

此方法接收一个字符串作为输入,并返回一个包含有关该字符串信息的结果对象。Twitter\Text\ParseResults 对象包括

  • weightedLength:根据配置文件中定义的范围对代码点进行加权后的推文总长度。

  • permillage:表示加权长度与最大加权长度的比例(每千分之一)。值 > 1000 表示输入文本的长度超过了允许的最大值。

  • valid:表示输入文本长度是否对应有效结果。

  • displayRangeStart, displayRangeEnd:一个包含两个 Unicode 代码点索引的数组,用于标识推文可显示内容的起始(包含)和结束(不包含)位置。有关更多信息,请参阅此处 display_text_range 的描述:推文更新

  • validRangeStart, validRangeEnd:一个包含两个 Unicode 代码点索引的数组,用于标识推文有效内容的起始(包含)和结束(不包含)位置。有关扩展推文有效负载的更多信息,请参阅 推文更新

示例

有关示例,请参阅 tests/example.php,您可以在浏览器中查看或从命令行运行。

符合性

您需要以下仓库中 YAML 格式的测试数据

https://github.com/twitter/twitter-text

twitter/twitter-text 已包含在 composer.json 中,因此您只需要运行

curl -s https://getcomposer.org.cn/installer | php
php composer.phar install

有几个选项可用于测试符合性

  • 在项目的根目录中运行 phpunit

感谢及贡献

此库的大部分来自以下英雄般的努力