在 PHP 中计算最终推文字符长度

发布于 2024-12-26 20:22:06 字数 184 浏览 0 评论 0原文

twitter 为推文中的所有链接设置固定字符长度 20。

因此,即使用户使用像 bit.ly 这样的 url 缩短服务并粘贴短于 20 个字符的 url,所有 url 最终会被twitter给出20个字符的长度。

我想知道如何使用 PHP 计算一条推文的最终长度(包括一个或多个短网址),使其保持在 140 个字符以下。

twitter sets a fixed character length of 20 for all links inside tweets.

So even if a user uses an url shortening service like bit.ly and pastes url shorter than 20 characters all urls
will finally be given a length of 20 characters by twitter.

I was wondering how to calculate the final length of a tweet(including one or multiple short urls) so it stays under 140 characters with PHP.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

没︽人懂的悲伤 2025-01-02 20:22:06

您可以通过正则表达式将链接替换为一些通用文本,并使用 mb_strlen() 之后。 mb_strlen 因为 Twitter 将多字节字符计为一个字符。

$tweet = 'Check this: http://stackoverflow.com/questions/8864767/calculate-final-tweet-character-length-in-php';
$length = mb_strlen(preg_replace('~https?://([^\s]*)~', 'http://8901234567890', $tweet), 'UTF-8');
var_dump($length); // int(32);

您可能需要稍微调整正则表达式,因为它可能匹配太多(无效字符)

You can replace your links with some generic text via regex and count the whole length with mb_strlen() afterwards. mb_strlen because Twitter counts Multibyte chars as one char.

$tweet = 'Check this: http://stackoverflow.com/questions/8864767/calculate-final-tweet-character-length-in-php';
$length = mb_strlen(preg_replace('~https?://([^\s]*)~', 'http://8901234567890', $tweet), 'UTF-8');
var_dump($length); // int(32);

You will probably have to tune the regex a bit as it may match to much (invalid chars)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文