Ciri Penapisan Kata Kunci dan Penyederhanaan Kandungan dalam Sistem Sembang Langsung PHP
Dalam rangkaian sosial moden dan aplikasi sembang langsung, ciri penapisan kata kunci dan penyederhanaan kandungan menjadi semakin penting. Ciri ini boleh membantu melindungi pengguna daripada kandungan yang tidak sesuai dan mesej berniat jahat. Artikel ini akan memperkenalkan cara menggunakan bahasa PHP untuk melaksanakan sistem sembang masa nyata yang mudah dan menambah fungsi penapisan kata kunci dan semakan kandungan.
Pertama, kita perlu mencipta pangkalan data MySQL untuk menyimpan mesej sembang. Anda boleh menggunakan kod berikut untuk mencipta pangkalan data bernama "chat_system" dan mencipta jadual bernama "message" dalam pangkalan data.
<?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(); ?>
Seterusnya, kami mencipta antara muka sembang HTML ringkas yang membolehkan pengguna menghantar dan menerima mesej. Anda boleh menggunakan kod berikut sebagai templat asas.
<!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>
Menggunakan perpustakaan Vue.js dan Axios, kami boleh melaksanakan fungsi sembang masa nyata. Buat fail yang dipanggil "chat.js" dan tambah kod berikut. Kod ini akan menggunakan WebSocket untuk berkomunikasi dengan pelayan dalam masa nyata dan memaparkan mesej yang diterima pada antara muka sembang.
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(); } }; }); } });
Selepas menerima mesej yang dihantar oleh pengguna, kami perlu menyemak sama ada mesej itu mengandungi kata kunci yang tidak baik. Anda boleh menggunakan ungkapan biasa untuk memadankan teks mesej dan menggantikan kata kunci buruk dengan asterisk "*". Ini boleh dilakukan di sebelah pelayan.
Kemas kini fail chat.js dan tambah kod berikut:
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; }
Kod ini akan memanggil fungsi kata kunci penapis selepas menerima mesej untuk menyemak sama ada teks mesej mengandungi kata kunci dan menggantikannya dengan bilangan asterisk "* " yang sama. Senarai kata kunci boleh dikembangkan mengikut keperluan sebenar.
Selain penapisan kata kunci, kami juga boleh menggunakan API semakan kandungan pihak ketiga untuk mencapai semakan kandungan yang lebih berkesan. API ini boleh mengesan pelbagai kandungan yang tidak sesuai seperti penyalahgunaan, pornografi, keganasan, dsb. melalui analisis teks dan algoritma pembelajaran mesin.
Di sini, kami mengambil "Tencent Cloud Content Audit API" sebagai contoh untuk mendapatkan hasil audit dengan menghantar permintaan HTTP ke antara muka API. Pertama, anda perlu mendaftar dan mendapatkan ID Apl dan Kunci Apl API.
Kemas kini fail chat.js dan tambah kod berikut:
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; }
Kod ini akan menggunakan pustaka axios untuk menghantar permintaan POST ke Tencent Cloud Content Review API selepas menyemak penapisan kata kunci dan menghantar teks mesej sebagai parameter kepada API. Jika skor audit yang dikembalikan oleh API melebihi ambang (di sini ditetapkan kepada 0.6), kandungan tersebut dianggap mengandungi maklumat yang tidak baik dan kotak amaran akan muncul untuk menggesa pengguna.
Di atas ialah contoh cara menggunakan bahasa PHP untuk melaksanakan sistem sembang masa nyata dan menambah fungsi penapisan kata kunci dan semakan kandungan. Contoh ini hanyalah demonstrasi mudah, dan aplikasi sebenar mungkin memerlukan logik yang lebih kompleks dan lengkap untuk melindungi pengguna daripada kandungan yang tidak sesuai.
Atas ialah kandungan terperinci Fungsi penapisan kata kunci dan semakan kandungan dalam sistem sembang masa nyata PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!