Heim >Datenbank >MySQL-Tutorial >Wie durchsucht man MySQL-Spalten mit HTML-Tags genau?
HTML-Tags aus einem Datensatz entfernen
Möglicherweise sind Sie auf eine Situation gestoßen, in der Sie in einer Spalte, die Folgendes enthält, nach einem bestimmten Schlüsselwort suchen müssen HTML-Tags. Möglicherweise stellen Sie jedoch fest, dass Ihre Abfrage aufgrund des Vorhandenseins dieser Tags falsche Ergebnisse zurückgibt. Sehen wir uns an, wie Sie Ihre MySQL-Abfrage ändern, um Datensätze basierend auf ihrem Inhalt genau zu filtern und gleichzeitig HTML-Tags auszuschließen.
Im bereitgestellten Beispiel ruft die Abfrage SELECT * from table WHERE colmn_name LIKE '%mytext%' alle vier ab Zeilen, obwohl nur Zeile 3 im Inhalt das Schlüsselwort „mytext“ enthält. Um diese Herausforderung zu meistern, ziehen Sie die folgende von einem MySQL-Forumsmitglied vorgeschlagene Lösung in Betracht:
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>');
Diese Lösung beinhaltet die Erstellung einer benutzerdefinierten Funktion (UDF) namens fnStripTags, die eine schmutzige Zeichenfolge mit HTML-Tags akzeptiert. Die Funktion durchläuft die Zeichenfolge und sucht nach öffnenden (<) und schließenden (>) Tags. Es berechnet die Länge des Tags und entfernt es aus der Zeichenfolge, um eine saubere Zeichenfolge ohne HTML-Elemente zu erstellen.
Um diese UDF zu verwenden, können Sie sie wie folgt in Ihre ursprüngliche Abfrage integrieren:
SELECT * FROM table WHERE fnStripTags(column_name) LIKE '%mytext%';
Durch die Verwendung dieser UDF schließt Ihre Abfrage HTML-Tags von der Suche aus und stellt so sicher, dass Sie nur Zeilen abrufen, in denen das Schlüsselwort „mytext“ im tatsächlichen Inhalt vorkommt. Mit diesem Ansatz können Sie eine präzisere Datenfilterung durchführen und Störungen durch HTML-Markup vermeiden.
Das obige ist der detaillierte Inhalt vonWie durchsucht man MySQL-Spalten mit HTML-Tags genau?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!