最近在负责一个用户通知系统,其中一个核心功能就是通过短信发送各种提醒和验证码。起初,我们只是简单地使用
mb_strlen()
面对这些挑战,我们尝试过自己编写复杂的逻辑来判断编码、计算长度,但代码量大、维护困难,而且总有遗漏的边缘情况。正当我们焦头烂额之际,发现了
instasent/sms-counter-php
instasent/sms-counter-php
instasent/sms-counter-php
使用 Composer 安装
instasent/sms-counter-php
<pre class="brush:php;toolbar:false;">composer require instasent/sms-counter-php
Composer 会自动处理依赖并下载库文件,让你的项目立即拥有强大的短信计数能力。
立即学习“PHP免费学习笔记(深入)”;
安装完成后,你就可以在代码中轻松使用它了。以下是一个基本示例:
<pre class="brush:php;toolbar:false;"><?php
require 'vendor/autoload.php'; // 引入 Composer 自动加载文件
use Instasent\SMSCounter\SMSCounter;
$smsCounter = new SMSCounter();
// 示例1:纯英文GSM 7-bit编码
$text1 = 'Hello world, this is a test message for counting characters.';
$result1 = $smsCounter->count($text1);
echo "短信内容: \"{$text1}\"\n";
echo "计数结果:\n";
print_r($result1);
/*
输出类似:
stdClass Object
(
[encoding] => GSM_7BIT
[length] => 58
[per_message] => 160
[remaining] => 102
[messages] => 1
)
*/
echo "\n-----------------------------------\n\n";
// 示例2:包含中文,自动切换UTF-16编码
$text2 = '你好,世界!这是一条包含中文的测试短信。';
$result2 = $smsCounter->count($text2);
echo "短信内容: \"{$text2}\"\n";
echo "计数结果:\n";
print_r($result2);
/*
输出类似:
stdClass Object
(
[encoding] => UTF16
[length] => 21
[per_message] => 70
[remaining] => 49
[messages] => 1
)
*/
echo "\n-----------------------------------\n\n";
// 示例3:超长短信,自动分段
$text3 = '这是一条非常长的测试短信,用来演示短信分段的功能。在实际应用中,短信长度的精确计算对于控制成本和确保信息完整性至关重要。如果短信内容过长,它会被自动拆分成多条短信发送。';
$result3 = $smsCounter->count($text3);
echo "短信内容: \"{$text3}\"\n";
echo "计数结果:\n";
print_r($result3);
/*
输出类似:
stdClass Object
(
[encoding] => UTF16
[length] => 93
[per_message] => 67 // 注意:分段后每条的可用字符数会减少
[remaining] => 41
[messages] => 2
)
*/
echo "\n-----------------------------------\n\n";
// 示例4:包含表情符号(UTF16)
$text4 = '这是一条带表情的短信:???';
$result4 = $smsCounter->count($text4);
echo "短信内容: \"{$text4}\"\n";
echo "计数结果:\n";
print_r($result4);
/*
输出类似:
stdClass Object
(
[encoding] => UTF16
[length] => 15
[per_message] => 70
[remaining] => 55
[messages] => 1
)
*/
?>count()
stdClass
encoding
GSM_7BIT
UTF16
length
per_message
remaining
messages
instasent/sms-counter-php
sanitizeToGSM()
sanitizeToGSM('dadáó')dadao
countWithShiftTables()
使用
instasent/sms-counter-php
总而言之,如果你正在开发任何需要发送短信的PHP应用,并且对短信的字符计数和分段有精确要求,那么
instasent/sms-counter-php
以上就是如何精确计算短信字数与分段?使用instasent/sms-counter-php轻松搞定的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号