HTML-Tags aus Datenbankdatensätzen entfernen
Sie versuchen, Zeilen aus einer Datenbanktabelle zu extrahieren, in der eine bestimmte Spalte das Schlüsselwort „mytext“ enthält ", stoßen jedoch auf falsche Ergebnisse. Die Tabelle enthält Zeilen mit unterschiedlich vielen HTML-Tags, die die Zeichenfolge einschließen. Um die Zeilen, die den gewünschten Text enthalten, genau zu identifizieren, ist es wichtig, in HTML-Tags eingeschlossenen Text auszuschließen.
Eine mögliche Lösung besteht darin, eine benutzerdefinierte MySQL-Funktion namens fnStripTags zu verwenden. Diese Funktion verwendet eine Zeichenfolge als Eingabe und entfernt alle HTML-Tags, wodurch eine reine Textausgabe bereitgestellt wird.
Code:
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 ;
Verwendung:
Sobald die Funktion definiert ist, können Sie sie in Ihrer Abfrage verwenden, um HTML-Tags aus der auszuschließen Suche:
SELECT * FROM table WHERE fnStripTags(colmn_name) LIKE '%mytext%';
Diese geänderte Abfrage gibt nur die Zeilen zurück, in denen der entfernte Text die Zeichenfolge „mytext“ enthält, und liefert Ihnen das richtige Ergebnis:
Row 3: <p>This is the Third row my mytext is there </p>
Das obige ist der detaillierte Inhalt vonWie kann ich eine Datenbankspalte nach Text durchsuchen und dabei HTML-Tags ignorieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!