PHP explode 检测用户名

标签 php mysql twitter explode detect

我正在尝试构建一个 PHP 代码来检测类似 Twitter 的提及,但我不是链接到 @username,而是定位用户的 ID 并引用它。

function get_user_id_from_username($username) {
    $username = sanitise($username);
    return mysql_result(mysql_query("SELECT user_id FROM users WHERE user_sitename = '$username'"), 0, 'user_id');
}

$string = sanitise($_POST['updatetext']);
$explosion = explode("@", $string);
$count = count($explosion);

for($i = 0; $i < $count; $i++){
    $explosion2 = explode(" ", $explosion[$i]);
    $explosion2 = $explosion2[0];

    $username_id = get_user_id_from_username($explosion2);

    $string = str_replace("@{$explosion2}", "<a href='profile.php?id={$username_id}'>{$explosion2}</a>", $string);
}

我遇到的问题是只有当@username 后面没有标点符号时才会检测到用户名,但是如果 $update 等于“你好@username,你还好吗?”查询找不到等于“用户名”的用户名,因此会引发错误。

一旦存在任何标点符号,是否有一种方法可以结束 explode ?那么 $explosion2 不是等于“用户名”,而是等于“用户名”?

最佳答案

不要使用explode,而是:

preg_match_all('/@[A-Za-z]+/',$string,$usernames);

这将为您提供一组用户名 $usernames,然后您可以循环执行您的数据库查找。请注意,用户名将包含 @ - 您需要在进行查找之前将其删除。

我假设用户名完全由字母组成——如果你想允许数字或其他字符,只需相应地调整正则表达式即可。

关于PHP explode 检测用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16681343/

相关文章:

javascript - 在 javascript click() 中获取 php 变量?

python - 使用tornado.auth.TwitterMixin 和回调URL?

mysql - 用于创建交叉表的 MySQL 存储例程

php - 缓存 PDO 准备好的语句

php - Yii2 用户模型与关系表

python - Tweepy - 如何从转推中找到原始推文 ID?

c# - Twitter API : 401 on POST, GET 工作正常

javascript - 使用 javascript 根据客户所在国家/地区翻译网站

logging - 如果错误日志目录不存在,PHP 是否会创建该目录?

php - 使用 mysql_fetch_array 打印逗号分隔的字符串和 mysql_num 来计数