当前位置:首页 > PHP

php 实现@好友

2026-03-12 23:09:37PHP

实现@好友功能

在PHP中实现@好友功能,通常涉及前端交互和后端处理的结合。以下是一个完整的实现方案:

前端部分 在文本输入框中监听用户输入,检测@符号并显示好友列表供选择。可以使用jQuery或原生JavaScript实现:

$('#content').on('input', function() {
    let content = $(this).val();
    let lastAtPos = content.lastIndexOf('@');

    if(lastAtPos !== -1) {
        let query = content.substring(lastAtPos + 1);
        if(query.length > 0) {
            $.ajax({
                url: '/get_friends.php',
                data: {q: query},
                success: function(data) {
                    showFriendList(data);
                }
            });
        }
    }
});

后端处理 创建获取好友列表的接口,根据输入的关键词返回匹配的好友:

// get_friends.php
$q = $_GET['q'] ?? '';
$friends = []; // 从数据库查询好友列表

// 示例数据库查询
$stmt = $pdo->prepare("SELECT id, username FROM users WHERE username LIKE ? LIMIT 10");
$stmt->execute(["%$q%"]);
$friends = $stmt->fetchAll(PDO::FETCH_ASSOC);

header('Content-Type: application/json');
echo json_encode($friends);

存储处理 当用户提交内容时,解析内容中的@好友并存储:

// store_content.php
$content = $_POST['content'];
preg_match_all('/@([^\s]+)/', $content, $matches);

foreach($matches[1] as $username) {
    // 获取用户ID并建立关联关系
    $stmt = $pdo->prepare("SELECT id FROM users WHERE username = ?");
    $stmt->execute([$username]);
    $user = $stmt->fetch();

    if($user) {
        // 存储用户提及关系
        $stmt = $pdo->prepare("INSERT INTO mentions (content_id, user_id) VALUES (?, ?)");
        $stmt->execute([$contentId, $user['id']]);
    }
}

显示处理 在显示内容时,将@用户名转换为可点击的链接:

function parseMentions($content) {
    return preg_replace('/@([^\s]+)/', '<a href="/user/$1">@$1</a>', $content);
}

数据库设计

需要创建相关表来存储提及关系:

CREATE TABLE mentions (
    id INT AUTO_INCREMENT PRIMARY KEY,
    content_id INT NOT NULL,
    user_id INT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (content_id) REFERENCES contents(id),
    FOREIGN KEY (user_id) REFERENCES users(id)
);

通知功能

当用户被@时,可以添加通知功能:

// 在存储提及关系后
$notification = "你被@提及了";
$stmt = $pdo->prepare("INSERT INTO notifications (user_id, content, is_read) VALUES (?, ?, 0)");
$stmt->execute([$user['id'], $notification]);

性能优化

对于大量用户的情况,可以考虑以下优化:

php 实现@好友

  • 使用Redis缓存好友列表
  • 对提及检测使用更高效的正则表达式
  • 实现异步处理提及通知

这个实现方案涵盖了从用户输入到存储再到显示的完整流程,可以根据具体需求进行调整和扩展。

标签: 好友php
分享给朋友:

相关文章

php实现定时任务

php实现定时任务

PHP 实现定时任务的几种方法 在 PHP 中实现定时任务可以通过多种方式完成,具体选择取决于项目需求和服务器环境。以下是常见的实现方法: 使用 Cron 任务 Cron 是 Linux 系统中常用…

php实现注册

php实现注册

注册功能实现步骤 数据库准备 创建用户表,包含字段如id、username、password、email等。示例SQL: CREATE TABLE users ( id INT AUTO_I…

php 实现验证码

php 实现验证码

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

php实现聊天

php实现聊天

实现 PHP 聊天功能的方法 使用 WebSocket 和 PHP 实现实时聊天 WebSocket 是一种全双工通信协议,适合实现实时聊天功能。PHP 可以通过 Ratchet 库实现 WebSo…

php 实现单链表

php 实现单链表

单链表的基本概念 单链表是一种线性数据结构,由节点组成,每个节点包含数据域和指向下一个节点的指针域。链表的头节点是访问整个链表的入口。 单链表的节点类实现 在PHP中,可以通过类来定义链表节点。每个…

php 实现mvc

php 实现mvc

PHP 实现 MVC 架构的方法 MVC(Model-View-Controller)是一种常见的软件设计模式,用于分离业务逻辑、用户界面和用户输入。以下是 PHP 实现 MVC 架构的关键步骤:…