ユーザーをメンションし、メンションされた場合に通知を受け取るための Twitter に似たシステムを作成しようとしています。ここで同様のことを尋ねる質問がたくさんありましたが、決定的なものはなく、何らかの形で私を助けてくれました.
私の最初の問題は、ステータスが投稿されたときにメンションを解析することです。ある程度は機能しますが、使用する必要がある表現が苦手です。たとえば、「@user1 hello there its @user2」というステータスを投稿した場合、user1 は @ を最初の文字として正しく解析しますが、user2 は解析されたプロファイル リンクの一部としてスペースを表示します。ここに私の preg_replace と式があります。 :
$STRING = preg_replace('/(^|\s)(@\w+)/','<a href="profile.php?u=$0">$0</a>', $STRING);
また、プロファイル リンクで @ を使用せずにユーザー名のみを表示する方法を知る必要があります。現在の $0 も @ 記号を生成します。
通知に関しては、次の構造を持つ alerts というテーブルがあります。
ID | ユーザー ID | 送信者 | メッセージ | 受け取った
メッセージ フィールドには、通知メッセージの内容が含まれます。送信されたフォームからメンションを抽出し、ユーザー名が存在するかどうかを確認し、そこから投稿でメンションされたことをユーザーに通知する方法を知りたいと思っていました。