從記錄中刪除HTML 標籤
您可能遇到這樣的情況:您需要在包含以下內容的欄位中搜尋特定關鍵字HTML 標籤。但是,您可能會注意到,由於這些標籤的存在,您的查詢返回了不正確的結果。讓我們探索如何修改 MySQL 查詢以根據內容準確過濾記錄,同時排除 HTML 標籤。
在提供的範例中,查詢 SELECT * from table WHERE colmn_name LIKE '%mytext%' 將檢索所有四個行,即使只有第 3 行的內容包含關鍵字「mytext」。為了克服這項挑戰,請考慮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>');
此解決方案涉及建立一個名為fnStripTags 的使用者定義函數(UDF),該函數接受包含HTML 標記的髒字串。此函數遍歷字串,定位開始 () 標記。它計算標籤的長度並將其從字串中刪除,以產生沒有 HTML 元素的乾淨字串。
要使用此UDF,您可以將其合併到原始查詢中,如下所示:
SELECT * FROM table WHERE fnStripTags(column_name) LIKE '%mytext%';
透過使用此UDF,您的查詢將從搜尋中排除HTML 標記,確保您僅檢索實際內容中出現關鍵字“mytext”的行。這種方法可讓您執行更精確的資料過濾,並避免 HTML 標記的任何干擾。
以上是如何準確搜尋MySQL包含HTML標籤的欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!