Heim > Datenbank > MySQL-Tutorial > Wie kann ich eine Datenbankspalte nach Text durchsuchen und dabei HTML-Tags ignorieren?

Wie kann ich eine Datenbankspalte nach Text durchsuchen und dabei HTML-Tags ignorieren?

Linda Hamilton
Freigeben: 2024-12-06 14:31:12
Original
960 Leute haben es durchsucht

How Can I Search a Database Column for Text While Ignoring HTML Tags?

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 ;
Nach dem Login kopieren

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%';
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage