PHP如何精准截取发动短信内容?附代码示例

PHP截取发动短信内容的方法

PHP如何精准截取发动短信内容?附代码示例

在PHP开发中,短信发送是常见功能,而短信内容的截取与处理则直接影响信息的准确性和合规性,本文将详细介绍几种常用的PHP截取短信内容的方法,帮助开发者高效处理短信文本。

使用substr()函数截取固定长度内容

substr()是PHP中最基础的字符串截取函数,适用于需要固定长度短信内容的场景,若短信内容限制为70个字符(GSM编码),可通过以下方式截取:

$content = "这是一条需要截取的短信内容,长度可能超过限制。";  
$shortContent = substr($content, 0, 70);  

注意事项:直接截取可能导致中文乱码,需确保编码一致(如UTF-8)。

结合mbstring扩展处理多字节字符

中文、日文等多字节字符需使用mb_substr()避免截断错误。

$content = "这是一条包含中文的短信,需要安全截取。";  
$shortContent = mb_substr($content, 0, 50, 'UTF-8');  

优势:支持多字节编码,避免乱码问题,适合国际化场景。

正则表达式精准匹配与截取

若需按特定规则截取(如提取验证码),可使用正则表达式:

PHP如何精准截取发动短信内容?附代码示例

$content = "您的验证码是:123456,请勿泄露。";  
preg_match('/验证码是:(d{6})/', $content, $matches);  
$code = $matches[1]; // 提取验证码  

适用场景提取,如订单号、链接等。

结合短信长度限制优化内容

不同编码下短信长度不同(如UTF-8下70字符≈GSM下160字符),可通过以下方式动态计算:

$maxGsmLength = 160;  
$utf8Length = mb_strlen($content, 'UTF-8');  
if ($utf8Length > $maxGsmLength) {  
    $content = mb_substr($content, 0, $maxGsmLength, 'UTF-8') . '...';  
}  

提示:需根据运营商规则调整长度阈值。

使用第三方库简化处理

对于复杂需求,可借助库如PHPMailer或自定义工具类:

use PHPMailerPHPMailerPHPMailer;  
$mailer = new PHPMailer();  
$mailer->Body = mb_substr($content, 0, 100, 'UTF-8'); // 自动处理编码  

优势:封装常用逻辑,减少重复代码。

安全性与合规性检查 前需过滤敏感信息(如SQL注入、XSS攻击):

$content = htmlspecialchars(strip_tags($content), ENT_QUOTES, 'UTF-8');  
$shortContent = mb_substr($content, 0, 70, 'UTF-8');  

关键点符合平台规范,避免法律风险。

PHP如何精准截取发动短信内容?附代码示例


相关问答FAQs

Q1:如何避免截取中文短信时出现乱码?
A:使用mb_substr()并明确指定编码(如UTF-8),同时确保源文件编码与页面声明一致。mb_substr($str, 0, 10, 'UTF-8')。

Q2:短信内容过长时,如何自动添加省略号?
A:通过mb_strlen()判断长度,超限后截取并拼接省略号,示例:

if (mb_strlen($content, 'UTF-8') > 70) {  
    $content = mb_substr($content, 0, 67, 'UTF-8') . '...';  
}  

图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/191886.html

赞 (0)
上一篇 2025年12月24日 10:20
下一篇 2025年12月24日 10:22

相关推荐

  • 系统配置怎么设置,系统配置怎么设置

    系统配置怎么设置系统配置并非简单的参数堆砌,而是构建高性能、高可用数字基础设施的核心基石,对于企业级应用而言,最优的系统配置策略应遵循“按需分配、动态调整、安全前置”三大原则,盲目追求硬件顶配或过度压缩资源往往导致性能瓶颈或安全隐患,正确的配置流程始于对业务负载的精准评估,终于对监控数据的持续优化,通过合理的资……

    2026年5月28日
    02213
  • JSP过滤器配置中,web.xml和注解两种方式有何区别呢?

    在Java Web开发中,JSP过滤器是一个强大的组件,它能够在客户端请求到达目标资源(如JSP页面或Servlet)之前进行拦截,并在服务器响应返回给客户端之前进行处理,这种机制常用于实现通用的功能,如用户认证、日志记录、字符编码统一、数据压缩等,从而提高代码的复用性和可维护性,配置过滤器是使用它的第一步,主……

    2025年10月22日
    04990
    • 服务器间歇性无响应是什么原因?如何排查解决?

      根源分析、排查逻辑与解决方案服务器间歇性无响应是IT运维中常见的复杂问题,指服务器在特定场景下(如高并发时段、特定操作触发时)出现短暂无响应、延迟或服务中断,而非持续性的宕机,这类问题对业务连续性、用户体验和系统稳定性构成直接威胁,需结合多维度因素深入排查与解决,常见原因分析:从硬件到软件的多维溯源服务器间歇性……

      2026年1月10日
      020
  • 公众平台开发者模式如何正确设置?,公众平台开发者模式怎么配置接口

    公众平台开发者模式是微信为具备编程能力的运营者提供的API接口服务,通过配置服务器实现自定义功能,是2026年公众号实现深度运营与用户互动的核心技术方案,开发者模式的核心价值与适用场景与编辑模式的本质差异- 编辑模式依赖微信后台内置功能,操作简单但功能固定;开发者模式通过接口调用,可实现菜单、消息、网页等全维度……

    2026年7月19日
    01233
  • 东北服务器是哪个省?东北服务器租用哪家好?

    东北服务器不是一个省,而是东北地区的服务器节点统称,主要覆盖辽宁、吉林、黑龙江三省,常见机房城市是沈阳、大连、长春、哈尔滨,如果服务商只写“东北节点”,多数情况下落在辽宁沈阳或大连,很多人第一次听到“东北服务器”,会以为它像“广东服务器”“浙江服务器”一样对应某个省,东北”是地理大区,行政上,东北三省是辽宁、吉……

    2026年9月22日
    0574

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注