目次
返信内容:
ホームページ バックエンド開発 PHPチュートリアル コメントや記事に@ユーザー名を追加して、@ユーザーに通知を受け取る機能を実装するにはどうすればよいですか?

コメントや記事に@ユーザー名を追加して、@ユーザーに通知を受け取る機能を実装するにはどうすればよいですか?

Jun 17, 2016 am 08:31 AM

コメントまたは記事に @ ユーザー名を追加すると、ユーザー名にユーザーのホームページ アドレスが自動的にタグ付けされます。同時に、@ ユーザーに通知を受け取ることができます。この機能はどのように実装すればよいでしょうか。

返信内容:

各コメントと記事が投稿されると、@ 以降のコンテンツ (区切り文字やその他のルールなど) が照合およびグループ化され、非同期的にメッセージ キューにプッシュされます。

このキューは、既存のユーザーが存在するかどうかを処理し、既存のユーザーにメッセージをブロードキャストします。

バックエンドのロジックはおそらく次のようになります。カテゴリの編集は処理されず、挿入ステップのみが実行されます。

ここでは、at ユーザーを検索するためのインターフェイスを抽象化し、at の背後にあるユーザーが正当であるかどうかを検出するためのインターフェイスを抽象化できます。

Web の場合は、at を見つけた後、範囲を操作して at または区切り文字に最も近い文字を選択してリクエストします。このキャラクターのキー列。現在のユーザーの友人またはサイト全体のユーザーからの「いいね」を求めるプロンプトが、カーソル位置の位置計算を加えたフローティング レイヤーとして表示されます。マウス選択後にテキストがマークされる場合があります。

このステップは主に、マークが見つかったときにバックエンドのマッチング速度を向上させることを目的としています。テキストを正規化する必要はありません。ユーザーへのマーク付き通知は、フロントエンドで解析してバックエンドに送信できます。

ここでの実装ロジックは人それぞれ異なる可能性があります。おおよその手順は上記の通りとなります。 さあ、Zhihu のやり方を一緒に勉強しましょう。
まず、回答中に誰かに話しかけるとニックネームが表示され、そのニックネームは Zhihu で繰り返すことができるため、当然のことながら、このニックネームに基づいてあなたがどの人に話しかけているかを直接判断することはできません。の。
回答の中で誰かに @ を付けてみることができます。まず、@ の後のユーザー名の部分のフォントの色が変更されていることがわかります。これは、at 部分が必要であることを示しています。特定のタグを使用して、F12 キーを押すとブラウザーのデバッグ機能が開き、以下に示すように、応答の @ 部分にある HTML コードが見つかります。 Zhihu は、@ とユーザー名を囲むタグを使用していることがわかります。赤い丸で囲まれたデータ ハッシュ属性と class="member_mention" に注目してください。クラス属性は、スタイルを変更したり、誰かがここにいることを示したり、データを示したりすることができます。 -hash 属性は非常に
コメントや記事に@ユーザー名を追加して、@ユーザーに通知を受け取る機能を実装するにはどうすればよいですか?
は、ユーザーが にいて、回答を送信した後、Zhihu サーバーは、member_mention と hash の 2 つの重要な属性に基づいて、ユーザーを正確かつ迅速に識別できます (もちろん、私は Zhihu の従業員ではありません。これは単なる個人的な推測です) Zhihu の実際の実装ではないかもしれませんが、この方法は可能です)、ユーザーを識別した後、ユーザーの名刺を表示する機能については、単純な JS と、該当するユーザーに通知を送信することができます。 cssの問題。 Baidu Tieba は誰かを @ して解析します。 Zhihu では、@ を入力してから人を選択します。これは確認されるため、解析する必要はありません。個人の ID をバックエンドに直接送信します。 これは、Baidu Tieba ID が一意であり、Zhihu ニックネームが一意ではないという事実と関係があるのか​​もしれません。 ユーザーが送信したコンテンツからキャプチャするための特別な解析ロジックをアプリケーション層に追加します。Zhihu のエディターでもリアルタイムに表示できることを考慮すると、この機能を公開する API がバックグラウンドで存在することになります。 @ の後の最初の有効なユーザー名を解析して、必要に応じて通知を送信します。 。 。 入力中にリアルタイムで選択を求める Zhihu を「いいね!」することもできます。 通常のマッチングの後、ユーザー名が存在するかどうかを確認しますこれに関するソースコードはDiscuzにあります 場合によります。 コンテンツが編集できなくなった場合、それをどのように実装しても問題はありません。 そうであれば、ビジネス要件が十分に明確ではありません。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

ストレージを使用してLaravelでファイルのダウンロードを発見してください::ダウンロード ストレージを使用してLaravelでファイルのダウンロードを発見してください::ダウンロード Mar 06, 2025 am 02:22 AM

ストレージ:: Laravelフレームワークのダウンロード方法は、ファイルストレージの抽象化を管理しながら、ファイルのダウンロードを安全に処理するための簡潔なAPIを提供します。 サンプルコントローラーでストレージ::ダウンロード()を使用する例は次のとおりです。

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

PHPにおける後期静的結合の概念を説明します。 PHPにおける後期静的結合の概念を説明します。 Mar 21, 2025 pm 01:33 PM

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

PHPロギング:PHPログ分析のベストプラクティス PHPロギング:PHPログ分析のベストプラクティス Mar 10, 2025 pm 02:32 PM

PHPロギングは、Webアプリケーションの監視とデバッグ、および重要なイベント、エラー、ランタイムの動作をキャプチャするために不可欠です。システムのパフォーマンスに関する貴重な洞察を提供し、問題の特定に役立ち、より速いトラブルシューティングをサポートします

Laravelサービスプロバイダーを登録および使用する方法 Laravelサービスプロバイダーを登録および使用する方法 Mar 07, 2025 am 01:18 AM

Laravelのサービスコンテナとサービスプロバイダーは、そのアーキテクチャの基本です。 この記事では、サービスコンテナ、詳細サービスプロバイダーの作成、登録、および実用的な使用法を例で説明します。 Oveから始めます

See all articles