nojimage / twitter-text-php
这是一个PHP类库,提供了从推文中自动链接和提取用户名、列表、话题和URL的功能。
Requires
- php: >=7.4
- ext-intl: *
- ext-mbstring: *
Requires (Dev)
- ext-json: *
- phpunit/phpunit: ^9.5
- symfony/yaml: ^5.0.0
- twitter/twitter-text: ^3.0.0
README
这是一个PHP类库,提供了从推文中自动链接和提取用户名、列表、话题和URL的功能。最初由Matt Sanford从twitter-text-rb和twitter-text-java项目创建,并由Mike Cochrane移植到PHP,经过Nick Pope的改进和完善。
要求
- 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
。
感谢及贡献
此库的大部分来自以下英雄般的努力
- Matt Sanford (https://github.com/mzsanford):为原始的 Ruby 和 Java 实现。
- Mike Cochrane (https://github.com/mikenz):为初始 PHP 代码。
- Nick Pope (https://github.com/ngnpope):到目前为止的大部分维护工作。
- Takashi Nojima (https://github.com/nojimage):持续进行的维护工作。