当前位置:首页 > PHP

php 实现 at用户

2026-03-13 09:04:29PHP

PHP 实现 @用户 功能

获取用户输入内容

从表单或 API 获取包含 @ 符号的用户输入内容,例如评论或消息。

$content = $_POST['content']; // 假设从表单获取内容

正则匹配 @用户名

使用正则表达式匹配内容中的 @ 用户名,格式通常为 @username。

preg_match_all('/@([a-zA-Z0-9_]+)/', $content, $matches);
$usernames = $matches[1]; // 提取匹配到的用户名数组

查询用户信息

根据匹配到的用户名查询数据库,验证用户是否存在并获取用户 ID 等信息。

// 假设使用 PDO 连接数据库
$stmt = $pdo->prepare("SELECT id FROM users WHERE username = ?");
foreach ($usernames as $username) {
    $stmt->execute([$username]);
    $user = $stmt->fetch();
    if ($user) {
        // 用户存在,记录用户 ID
        $mentionedUsers[] = $user['id'];
    }
}

替换为可点击链接

将 @username 替换为 HTML 链接,指向用户个人主页或触发其他动作。

php 实现 at用户

foreach ($usernames as $username) {
    $content = str_replace(
        "@$username",
        "<a href='/profile/$username'>@$username</a>",
        $content
    );
}

发送通知

为被 @ 的用户发送通知,可以通过数据库、邮件或即时消息实现。

// 假设有一个通知表
foreach ($mentionedUsers as $userId) {
    $stmt = $pdo->prepare("INSERT INTO notifications (user_id, message) VALUES (?, ?)");
    $stmt->execute([$userId, "You were mentioned in a post"]);
}

存储处理后的内容

将处理后的内容存储到数据库或返回给前端。

$stmt = $pdo->prepare("INSERT INTO posts (content) VALUES (?)");
$stmt->execute([$content]);

前端展示

确保前端正确渲染 HTML 链接,并为 @ 用户提供悬停效果或其他交互。

php 实现 at用户

<div class="post-content">
    <?php echo $content; ?>
</div>

安全性考虑

对用户输入进行过滤和转义,防止 XSS 攻击。

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

性能优化

对于高频使用的场景,可以考虑缓存用户查询结果或使用更高效的正则表达式。

// 使用预编译语句和批量查询优化性能
$stmt = $pdo->prepare("SELECT id, username FROM users WHERE username IN (?)");
$stmt->execute([implode(',', $usernames)]);
$users = $stmt->fetchAll();

测试与验证

编写单元测试验证正则匹配、用户查询和替换逻辑的正确性。

// 示例测试用例
$testContent = "Hello @user1 and @user2";
preg_match_all('/@([a-zA-Z0-9_]+)/', $testContent, $testMatches);
assert(count($testMatches[1]) === 2);

标签: 用户php
分享给朋友:

相关文章

php实现文件上传

php实现文件上传

PHP 文件上传实现方法 在 PHP 中实现文件上传需要处理 HTML 表单和服务器端脚本。以下是详细步骤: 创建 HTML 表单 使用 enctype="multipart/form-data"…

php长连接实现

php长连接实现

PHP 长连接实现方法 长连接(Keep-Alive)允许客户端与服务器在一次TCP连接中发送和接收多个HTTP请求/响应,减少重复建立连接的开销。以下是PHP中实现长连接的几种方式: 配置HTTP…

php如何实现直播

php如何实现直播

实现直播功能的方法 PHP可以通过结合其他技术和工具来实现直播功能。以下是几种常见的方法: 使用流媒体服务器 配置流媒体服务器如Nginx-RTMP、Red5或Wowza。这些服务器支持RTMP协…

php实现排序

php实现排序

PHP 数组排序方法 PHP 提供了多种内置函数用于数组排序,适用于不同的排序需求。以下是常见的排序方法: 按值升序排序 sort() 函数对数组按值升序排序,重置键名(索引数组适用): $num…

php无限分类的实现

php无限分类的实现

PHP无限分类的实现 无限分类是一种常见的树形结构数据组织方式,适用于商品分类、菜单管理、地区选择等场景。以下是几种实现方法: 递归实现法 递归是最直观的实现方式,通过函数自身调用来遍历子分类。数据…

php实现登陆

php实现登陆

PHP 实现登录功能 创建登录表单 在 HTML 文件中创建一个登录表单,包含用户名和密码输入框,表单的 action 属性指向处理登录的 PHP 文件。 <form action="logi…