Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mencari Lajur MySQL yang Mengandungi Tag HTML dengan Tepat?
Alih Keluar Teg HTML daripada Rekod
Anda mungkin mengalami situasi di mana anda perlu mencari kata kunci tertentu dalam lajur yang mengandungi tag HTML. Walau bagaimanapun, anda mungkin mendapati bahawa pertanyaan anda mengembalikan hasil yang salah disebabkan kehadiran teg ini. Mari kita terokai cara mengubah suai pertanyaan MySQL anda untuk menapis rekod dengan tepat berdasarkan kandungannya sambil mengecualikan teg HTML.
Dalam contoh yang disediakan, pertanyaan SELECT * dari jadual WHERE colmn_name LIKE '%mytext%' akan mendapatkan keempat-empat baris, walaupun hanya baris 3 mengandungi kata kunci "teks saya" dalam kandungannya. Untuk mengatasi cabaran ini, pertimbangkan penyelesaian berikut yang dicadangkan oleh ahli forum MySQL:
SET GLOBAL log_bin_trust_function_creators=1; DROP FUNCTION IF EXISTS fnStripTags; DELIMITER | CREATE FUNCTION fnStripTags( Dirty varchar(4000) ) RETURNS varchar(4000) DETERMINISTIC BEGIN DECLARE iStart, iEnd, iLength int; WHILE Locate( '<', Dirty ) > 0 And Locate( '>', Dirty, Locate( '<', Dirty )) > 0 DO BEGIN SET iStart = Locate( '<', Dirty ), iEnd = Locate( '>', Dirty, Locate('<', Dirty )); SET iLength = ( iEnd - iStart) + 1; IF iLength > 0 THEN BEGIN SET Dirty = Insert( Dirty, iStart, iLength, ''); END; END IF; END; END WHILE; RETURN Dirty; END; | DELIMITER ; SELECT fnStripTags('this <html>is <b>a test</b>, nothing more</html>');
Penyelesaian ini melibatkan penciptaan fungsi takrif pengguna (UDF) bernama fnStripTags yang menerima rentetan kotor yang mengandungi tag HTML. Fungsi ini berulang melalui rentetan, mencari teg pembukaan (<) dan penutup (>). Ia mengira panjang teg dan mengeluarkannya daripada rentetan untuk menghasilkan rentetan bersih tanpa elemen HTML.
Untuk menggunakan UDF ini, anda boleh memasukkannya ke dalam pertanyaan asal anda seperti berikut:
SELECT * FROM table WHERE fnStripTags(column_name) LIKE '%mytext%';
Dengan menggunakan UDF ini, pertanyaan anda akan mengecualikan teg HTML daripada carian, memastikan anda mendapatkan hanya baris di mana kata kunci "teks saya" muncul dalam kandungan sebenar. Pendekatan ini membolehkan anda melakukan penapisan data yang lebih tepat dan mengelakkan sebarang gangguan daripada penanda HTML.
Atas ialah kandungan terperinci Bagaimana untuk Mencari Lajur MySQL yang Mengandungi Tag HTML dengan Tepat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!