当前位置:首页 > 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
    ]);
}

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

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

相关文章

jquery 模板

jquery 模板

jQuery 模板的使用方法 jQuery 本身不提供内置的模板引擎,但可以通过插件或结合其他库实现模板功能。常见的方案包括使用 jQuery 结合 Handlebars、Mustache 或 Und…

vue模板实现

vue模板实现

Vue 模板实现 Vue 模板是 Vue.js 的核心特性之一,用于声明式地将数据渲染到 DOM 中。以下是 Vue 模板的实现方式和常见用法。 基本语法 Vue 模板使用 HTML 的模板语法,可…

jquery实现vue 模板

jquery实现vue 模板

使用jQuery模拟Vue模板功能 jQuery可以通过动态操作DOM和事件绑定来模拟Vue的模板功能。虽然jQuery没有Vue的数据绑定和虚拟DOM特性,但可以通过手动更新DOM实现类似效果。…

在线css模板制作

在线css模板制作

CSS模板制作工具推荐 以下是一些流行的在线CSS模板制作工具,可帮助快速生成或定制CSS样式: CSS Generator 提供多种CSS属性生成器,如边框、阴影、渐变等: CSSmatic…

js实现模板引擎

js实现模板引擎

实现简单模板引擎 使用字符串替换方法实现基础模板引擎功能。定义一个模板字符串,通过占位符标记需要替换的部分,利用正则表达式匹配占位符并进行替换。 function simpleTemplate(te…

jquery网站模板

jquery网站模板

jQuery 网站模板推荐与使用指南 免费 jQuery 网站模板资源 Bootstrap 官方模板 Bootstrap 内置 jQuery 支持,提供大量响应式模板,适合企业站、博客和后台管理界面…