为了账号安全,请及时绑定邮箱和手机立即绑定

使用PHP计算推文长度,就像推特一样

使用PHP计算推文长度,就像推特一样

PHP
凤凰求蛊 2022-08-19 16:49:50
我想像推特一样计算推文长度,我尝试在这里使用和所有这些类型mb_strlenstrlen问题是twitter计数为15,但是我得到了这些结果,我不知道twitter如何计算表情符号以及如何用php来处理这个问题"👍🏿✌🏿️ @mention"我的结果:strlen: 27mb_strlen UTF-8: 14mb_strlen UTF-16: 13iconv UTF-16: 14iconv UTF-16: 27
查看完整描述

2 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

来自 Twitter 的开发者文档

对于具有Unicode处理经验的程序员来说,这个问题的简短答案是,推文长度是通过文本的NFC规范化版本中的码位数来衡量的。

因此,要计算PHP中推文的长度,您将首先使用规范化表单C(NFC)规范化文本,然后计算规范化文本中的码位不是字符)的数量。

$text = "👍🏿✌🏿️ @mention";


// Get the normalized text in UTF-8

$NormalizedText = Normalizer::normalize($text, Normalizer::FORM_C );


// Now we can calculate the number of codepoints in this normalized text

$it = IntlBreakIterator::createCodePointInstance();

$it->setText($NormalizedText);


$len = 0;

foreach ($it as $codePoint) {

    $len++;

}


echo "Length = $len"; // Result: Length = 15


查看完整回答
反对 回复 2022-08-19
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

在某些情况下,@Sherif答案不起作用。我发现这个库运行良好nojimage/twitter-text-php


这是我的代码


use Twitter\Text\Parser;


$validator = Parser::create()->parseTweet($caption);

        

if ($validator->weightedLength > 280) {

    throw new MessageException("Maximum post length is 280 characters.");

}


查看完整回答
反对 回复 2022-08-19
  • 2 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信