私はメンション システムに取り組んでいますが、問題に遭遇しました。ループしてメンションをリンクに変更すると、@tom や @tom123 などの同様のものが個別ではなく /tom/ への同じリンクに置き換えられます。 .
regex と preg_replace を使用してみましたが、ユーザー名が実際に存在するかどうかも確認しているため、発生を防ぐ方法があるかどうか疑問に思っています。
$tweet = "@wayne how are you? @wayne123 is cool but are you?";
preg_match_all('/(^|\s)@([a-z0-9_]+)/i', $tweet, $matches);
$i = 0;
foreach( $matches[2] as $value )
{
if ( $db_query )
{
$tweet = str_replace("@" . $value, "<a href=\"/user/$value\">@$value</a>!", $tweet);
}
}
echo $tweet; // outputs: hi <a href="/user/wayne">@wayne!</a> how are you? <a href="/user/wayne">@wayne!</a>123 is cool but are you?
以前に正規表現を試したことがありますが、有効なユーザーであるかどうかを確認する前に、他のユーザーを更新して更新します。