当前位置:首页 > PHP

php 实现短信模板

2026-03-13 12:37:25PHP

实现短信模板的方法

在PHP中实现短信模板功能通常涉及模板的存储、变量替换和发送逻辑。以下是常见的实现方式:

使用字符串替换

最简单的短信模板可以通过字符串替换实现:

$template = "尊敬的{name},您的验证码是{code},有效期{minutes}分钟。";
$data = [
    'name' => '张三',
    'code' => '123456',
    'minutes' => 5
];

$message = str_replace(
    array_map(fn($key) => '{'.$key.'}', array_keys($data)),
    array_values($data),
    $template
);

数据库存储模板

将短信模板存储在数据库中更便于管理:

CREATE TABLE sms_templates (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    content TEXT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

查询并使用模板:

$templateId = 1; // 验证码模板ID
$template = $db->query("SELECT content FROM sms_templates WHERE id = $templateId")->fetchColumn();

$data = ['code' => '654321', 'minutes' => 10];
$message = preg_replace_callback('/\{(\w+)\}/', function($matches) use ($data) {
    return $data[$matches[1]] ?? $matches[0];
}, $template);

使用Twig模板引擎

对于复杂模板,可以使用Twig等模板引擎:

require_once 'vendor/autoload.php';

$loader = new \Twig\Loader\ArrayLoader([
    'sms' => 'Hello {{ name }}, your code is {{ code }}!',
]);
$twig = new \Twig\Environment($loader);

echo $twig->render('sms', ['name' => 'John', 'code' => '7890']);

短信模板类封装

封装一个短信模板处理类:

class SmsTemplate {
    private $db;
    private $templates = [];

    public function __construct(PDO $db) {
        $this->db = $db;
    }

    public function getMessage($templateId, array $data) {
        if (!isset($this->templates[$templateId])) {
            $stmt = $this->db->prepare("SELECT content FROM sms_templates WHERE id = ?");
            $stmt->execute([$templateId]);
            $this->templates[$templateId] = $stmt->fetchColumn();
        }

        return preg_replace_callback('/\{(\w+)\}/', function($matches) use ($data) {
            return $data[$matches[1]] ?? $matches[0];
        }, $this->templates[$templateId]);
    }
}

国际化和多语言支持

对于多语言短信模板:

$templates = [
    'en' => [
        'verification' => 'Your verification code is {code}'
    ],
    'zh' => [
        'verification' => '您的验证码是{code}'
    ]
];

function getSmsMessage($lang, $templateName, $data) {
    global $templates;
    $template = $templates[$lang][$templateName] ?? $templates['en'][$templateName];

    return str_replace(
        array_map(fn($k) => '{'.$k.'}', array_keys($data)),
        array_values($data),
        $template
    );
}

短信发送集成

结合短信发送API:

php 实现短信模板

function sendSms($phone, $templateId, $data) {
    $db = new PDO('mysql:host=localhost;dbname=sms', 'user', 'pass');
    $template = new SmsTemplate($db);
    $message = $template->getMessage($templateId, $data);

    $api = new SmsApi('your_api_key');
    return $api->send([
        'phone' => $phone,
        'message' => $message
    ]);
}

这些方法可以根据项目需求进行组合和扩展,实现灵活高效的短信模板功能。

标签: 模板短信
分享给朋友:

相关文章

vue实现模板打印

vue实现模板打印

Vue 实现模板打印的方法 在 Vue 中实现模板打印功能通常需要结合浏览器的打印 API 和 CSS 样式控制。以下是几种常见的方法: 使用 window.print() 方法 创建一个打印按钮,…

vue实现Word模板

vue实现Word模板

Vue 实现 Word 模板的方法 使用 docxtemplater 库 docxtemplater 是一个 JavaScript 库,可以在前端或后端生成 Word 文档。它支持模板变量替换,适合在…

vue 模板引擎 实现

vue 模板引擎 实现

Vue 模板引擎的实现原理 Vue 的模板引擎主要通过编译和渲染两个阶段将模板转换为真实的 DOM。以下是核心实现步骤: 模板编译阶段 解析模板为 AST(抽象语法树) 通过正则表达式或状态机将模板…

vue实现导出excel模板

vue实现导出excel模板

使用 vue-json-excel 插件 安装 vue-json-excel 插件 npm install vue-json-excel --save 在 main.js 中引入并注册组件 imp…

react实现短信验证注册

react实现短信验证注册

实现短信验证注册的步骤 后端API准备 确保已有发送短信验证码的API接口,通常需要手机号作为参数,返回成功或失败状态。验证码应由服务端生成并存储(如Redis),设置合理有效期(如5分钟)。 前端…

css制作模板

css制作模板

CSS 制作模板的方法 使用 CSS 变量定义主题 通过 CSS 变量(自定义属性)定义颜色、字体、间距等主题元素,便于全局统一修改。例如: :root { --primary-color: #…