Heim > Artikel > Backend-Entwicklung > Funktionen zur Schlüsselwortfilterung und Inhaltsüberprüfung im PHP-Echtzeit-Chat-System
Funktionen zur Schlüsselwortfilterung und Inhaltsmoderation im PHP-Live-Chat-System
In modernen sozialen Netzwerken und Live-Chat-Anwendungen werden Funktionen zur Schlüsselwortfilterung und Inhaltsmoderation immer wichtiger. Diese Funktionen können dazu beitragen, Benutzer vor unangemessenen Inhalten und bösartigen Nachrichten zu schützen. In diesem Artikel wird erläutert, wie Sie mithilfe der PHP-Sprache ein einfaches Echtzeit-Chat-System implementieren und Schlüsselwortfilter- und Inhaltsüberprüfungsfunktionen hinzufügen.
Zuerst müssen wir eine MySQL-Datenbank erstellen, um Chat-Nachrichten zu speichern. Mit dem folgenden Code können Sie eine Datenbank mit dem Namen „chat_system“ und eine Tabelle mit dem Namen „messages“ in der Datenbank erstellen.
<?php $conn = new mysqli("localhost", "root", "password"); $conn->query("CREATE DATABASE IF NOT EXISTS chat_system"); $conn->select_db("chat_system"); $conn->query("CREATE TABLE IF NOT EXISTS messages ( id INT AUTO_INCREMENT PRIMARY KEY, message TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP )"); $conn->close(); ?>
Als nächstes erstellen wir eine einfache HTML-Chat-Schnittstelle, die es Benutzern ermöglicht, Nachrichten zu senden und zu empfangen. Sie können den folgenden Code als Basisvorlage verwenden.
<!DOCTYPE html> <html> <head> <title>实时聊天系统</title> </head> <body> <div id="chat-container"> <div id="chat-messages"></div> <input type="text" id="message-input" placeholder="输入你的消息"> <button id="send-button">发送</button> </div> <script src="https://cdn.jsdelivr.net/npm/vue"></script> <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script> <script src="chat.js"></script> </body> </html>
Mithilfe von Vue.js und der Axios-Bibliothek können wir eine Echtzeit-Chat-Funktion implementieren. Erstellen Sie eine Datei mit dem Namen „chat.js“ und fügen Sie den folgenden Code hinzu. Dieser Code verwendet WebSocket, um in Echtzeit mit dem Server zu kommunizieren und die empfangenen Nachrichten auf der Chat-Oberfläche anzuzeigen.
var app = new Vue({ el: '#chat-container', data: { messages: [] }, mounted: function() { var self = this; var socket = new WebSocket('ws://localhost:8080'); socket.onmessage = function(event) { var message = JSON.parse(event.data); self.messages.push(message); }; this.$nextTick(function() { var input = document.getElementById('message-input'); var button = document.getElementById('send-button'); button.onclick = function() { var text = input.value; if (text !== '') { socket.send(JSON.stringify({ message: text })); input.value = ''; } }; input.onkeypress = function(event) { if (event.keyCode === 13) { button.click(); } }; }); } });
Nachdem wir die vom Benutzer gesendete Nachricht erhalten haben, müssen wir prüfen, ob die Nachricht fehlerhafte Schlüsselwörter enthält. Sie können reguläre Ausdrücke verwenden, um den Nachrichtentext abzugleichen und fehlerhafte Schlüsselwörter durch Sternchen „*“ zu ersetzen. Dies kann serverseitig erfolgen.
Aktualisieren Sie die Datei chat.js und fügen Sie den folgenden Code hinzu:
socket.onmessage = function(event) { var message = JSON.parse(event.data); message.text = self.filterKeywords(message.text); self.messages.push(message); }; filterKeywords: function(text) { var keywords = ['关键字1', '关键字2', '关键字3']; for (var i = 0; i < keywords.length; i++) { var regex = new RegExp(keywords[i], 'gi'); text = text.replace(regex, '*'.repeat(keywords[i].length)); } return text; }
Dieser Code ruft nach dem Empfang der Nachricht die Funktion filterKeywords auf, um zu prüfen, ob der Nachrichtentext Schlüsselwörter enthält, und ersetzt diese durch die gleiche Anzahl von Sternchen „*“. Die Keyword-Liste kann je nach Bedarf erweitert werden.
Zusätzlich zur Schlüsselwortfilterung können wir auch Inhaltsüberprüfungs-APIs von Drittanbietern verwenden, um eine effektivere Inhaltsüberprüfung zu erreichen. Diese APIs können durch Textanalyse und maschinelle Lernalgorithmen verschiedene unangemessene Inhalte wie Missbrauch, Pornografie, Gewalt usw. erkennen.
Hier nehmen wir „Tencent Cloud Content Audit API“ als Beispiel, um die Audit-Ergebnisse durch Senden von HTTP-Anfragen an die API-Schnittstelle zu erhalten. Zuerst müssen Sie sich registrieren und die App-ID und den App-Schlüssel der API erhalten.
Aktualisieren Sie die Datei chat.js und fügen Sie den folgenden Code hinzu:
filterKeywords: function(text) { // 关键字过滤逻辑... // 内容审核 var self = this; var appID = 'YOUR_APP_ID'; var appKey = 'YOUR_APP_KEY'; var apiUrl = 'https://api.youtu.qq.com/youtu/textapi/textporn'; axios.post(apiUrl, { app_id: appID, app_key: appKey, text: text }) .then(function(response) { if (response.data && response.data.porn_score > 0.6) { alert('内容含有不良信息,已被屏蔽'); } }) .catch(function(error) { console.log(error); }); return text; }
Dieser Code verwendet die Axios-Bibliothek, um nach Überprüfung der Schlüsselwortfilterung eine POST-Anfrage an die Tencent Cloud Content Review API zu senden und den Nachrichtentext als Parameter zu übergeben zur API. Wenn der von der API zurückgegebene Prüfwert den Schwellenwert überschreitet (hier auf 0,6 eingestellt), wird davon ausgegangen, dass der Inhalt fehlerhafte Informationen enthält, und ein Warnfeld wird angezeigt, um den Benutzer darauf hinzuweisen.
Das Obige ist ein Beispiel dafür, wie man mithilfe der PHP-Sprache ein Echtzeit-Chat-System implementiert und Schlüsselwortfilter- und Inhaltsüberprüfungsfunktionen hinzufügt. Bei diesem Beispiel handelt es sich nur um eine einfache Demonstration. Tatsächliche Anwendungen erfordern möglicherweise eine komplexere und vollständigere Logik, um Benutzer vor unangemessenen Inhalten zu schützen.
Das obige ist der detaillierte Inhalt vonFunktionen zur Schlüsselwortfilterung und Inhaltsüberprüfung im PHP-Echtzeit-Chat-System. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!