Heim >Datenbank >MySQL-Tutorial >Wie durchsucht man MySQL-Spalten mit HTML-Tags genau?

Wie durchsucht man MySQL-Spalten mit HTML-Tags genau?

DDD
DDDOriginal
2024-12-14 10:05:10166Durchsuche

How to Accurately Search MySQL Columns Containing HTML Tags?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn