当前位置:首页 > PHP

php实现微博@

2026-02-16 14:12:34PHP

实现微博@功能的方法

在PHP中实现微博的@功能,可以通过正则表达式匹配、数据库查询和前端交互完成。以下是具体实现步骤:

匹配用户昵称

使用正则表达式匹配文本中的@符号和用户昵称:

$pattern = '/@([a-zA-Z0-9_\x{4e00}-\x{9fa5}]+)/u';
preg_match_all($pattern, $content, $matches);
$mentionedUsers = array_unique($matches[1]);

查询用户ID

根据匹配到的昵称查询数据库获取用户ID:

php实现微博@

foreach ($mentionedUsers as $username) {
    $user = $db->query("SELECT id FROM users WHERE username = '$username'");
    if ($user) {
        $mentionedUserIds[] = $user['id'];
    }
}

存储提及关系

将提及信息存入数据库:

foreach ($mentionedUserIds as $userId) {
    $db->insert('mentions', [
        'post_id' => $postId,
        'user_id' => $userId,
        'created_at' => date('Y-m-d H:i:s')
    ]);
}

前端高亮显示

使用JavaScript实现前端@用户的高亮效果:

php实现微博@

function highlightMentions(text) {
    return text.replace(/@([a-zA-Z0-9_\u4e00-\u9fa5]+)/g, '<span class="mention">@$1</span>');
}

发送通知

当用户被@时发送通知:

foreach ($mentionedUserIds as $userId) {
    $notification = [
        'user_id' => $userId,
        'type' => 'mention',
        'data' => json_encode(['post_id' => $postId]),
        'created_at' => date('Y-m-d H:i:s')
    ];
    $db->insert('notifications', $notification);
}

安全性考虑

对用户输入进行过滤防止XSS攻击:

$content = htmlspecialchars($content, ENT_QUOTES, 'UTF-8');

以上方法组合使用可以实现完整的微博@功能,包括识别提及、存储关系、前端展示和通知提醒。

标签: php
分享给朋友:

相关文章

php实现表单

php实现表单

PHP 表单基础实现 创建一个简单的 PHP 表单需要 HTML 表单结构和 PHP 处理脚本。以下是一个完整的示例: HTML 表单部分 (form.html) <form action=…

php 实现验证码

php 实现验证码

使用 PHP 生成验证码 验证码(CAPTCHA)用于防止自动化脚本提交表单,以下是几种常见的 PHP 实现方法。 使用 GD 库生成图片验证码 GD 库是 PHP 的图像处理扩展,可用于生成验证码…

php实现跳转

php实现跳转

PHP 实现页面跳转的方法 在 PHP 中实现页面跳转有多种方式,以下是常见的几种方法及其适用场景: 使用 header() 函数 通过 header() 函数发送 HTTP 头部信息实现跳转。注意…

php 实现排序

php 实现排序

PHP 实现数组排序的方法 PHP 提供了多种内置函数和方法来实现数组排序,适用于不同的排序需求。以下是一些常见的排序实现方式: 使用 sort() 函数对数组进行升序排序 sort() 函数对数组…

php数组实现

php数组实现

PHP 数组的基本实现 PHP 数组是一种非常灵活的数据结构,可以存储多个值,并且支持多种类型的键(整数或字符串)。PHP 数组实际上是有序映射(ordered map),可以看作是列表(vector…

php登陆功能实现

php登陆功能实现

实现PHP登录功能 数据库准备 创建一个用户表存储登录信息,基本字段包括用户名、密码(需加密)等: CREATE TABLE users ( id INT AUTO_INCREMENT PR…