我正在尝试构建一个 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 等于“Hello @username,你还好吗?” 查询不会找到等于“用户名”的用户名,因此会引发错误。
一旦存在任何标点符号,有什么方法可以结束爆炸吗?所以不是 $explosion2 等于“用户名”,而是等于“用户名”?