簡體   English   中英

計算推文長度,例如 twitter 和 PHP

[英]Count tweet length like twitter with PHP

我想計算像 twitter 這樣的推文長度,我在這里嘗試使用mb_strlenstrlen所有這些類型

問題是 twitter 將"✌️ @mention" 15 ,但我得到了這些結果,但我不知道 twitter 如何計算表情符號以及如何使用 php 來解決這個問題

我的結果:

strlen: 27
mb_strlen UTF-8: 14
mb_strlen UTF-16: 13
iconv UTF-16: 14
iconv UTF-16: 27

來自Twitter 的開發者文檔

對於在 Unicode 處理方面有經驗的程序員來說,這個問題的簡短答案是推文長度是通過文本的 NFC 規范化版本中的代碼點數來衡量的。

因此,要在 PHP 中計算推文的長度,您將首先使用規范化形式 C (NFC)對文本進行規范化,然后計算規范化文本中的代碼點( NOT CHARACTERS ) 數量。

$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

@Sherif Answer 在某些情況下不起作用。 我發現這個庫可以完美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.");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM