Php 了解一条消息是否符合Twitter 140个字符的限制
我需要找出一条信息是否符合推特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,
$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短的链接。