Php 了解一条消息是否符合Twitter 140个字符的限制

Php 了解一条消息是否符合Twitter 140个字符的限制,php,Php,我需要找出一条信息是否符合推特140个字符的限制。 这就是我到目前为止所做的: $tweetLength = strlen(utf8_decode($_POST["message"])); if($tweetLength<141){ sendMessage(); } $tweetLength=strlen(utf8_解码($_POST[“message”]); 如果($tweetLength您可以这样做: preg_match_all('/http:.*?com/', $message,

我需要找出一条信息是否符合推特140个字符的限制。 这就是我到目前为止所做的:

$tweetLength = strlen(utf8_decode($_POST["message"]));
if($tweetLength<141){
sendMessage();
}
$tweetLength=strlen(utf8_解码($_POST[“message”]);

如果($tweetLength您可以这样做:

preg_match_all('/http:.*?com/', $message, $matches);

$message_length = strlen($message);

foreach ($matches as $match) {

    $message_length .= -strlen($match);
    $message_length .= 22;

}

您可以从这里处理https案例:)

简单的方法是使用正则表达式匹配tweet中的所有URL,并用(虚拟)22或23个字符的长字符串替换(
preg\u replace
)。然后你可以得到字符数

为了像Twitter一样解析URL,您可以深入研究URL,看看它到底是如何完成的

请注意,
strlen
在许多情况下都不起作用,因为它会多次计算特殊字符(重音字符和其他字符),因为这些字符是多字节字符。您需要使用
mb_strlen
mb_
代表*多字节)来正确计数

《开发者指南》介绍了twitter如何计算引擎盖下的chars:

Tweet长度通过文本的NFC标准化版本中的代码点数量来测量

它甚至引用了PHP来实现这一点。

我会使用:

$length= strlen(
    preg_replace(
        '/(?:http(s)?:\/\/|www\.)\S+/', 
        'xxxxxxxxxxxxxxxxxxxxxx$1', 
        $message
    )
);
这将取代:

  • http://www.stackoverflow.com
    进入
    xxxxxxxxxxxxxxxxxxxxxxxx
  • https://www.stackoverflow.com
    进入
    xxxxxxxxxxxxxxxxxxxxxxxx s
  • www.stackoverflow.com
    进入
    xxxxxxxxxxxxxxxxxxxx
  • http://g.co
    进入
    xxxxxxxxxxxxxxxxxxxxxxxx
  • https://g.co
    进入
    xxxxxxxxxxxxxxxxxxxxxxxx s
  • www.g.co
    进入
    xxxxxxxxxxxxxxxxxxxx
然后,字符串具有最终长度,您可以轻松检查:

if ($length <= 140) {
    sendMessage();
}

如果($length),请看一看如何准确地完成(但在JavaScript中)只想根据以下内容添加:
如果您没有使用opt-in功能,t.co将仅包装长度比t.co URL短的链接。