Thomas: Ersetzen von html-tags in komplettem sql-String

Hallo Forum!

Ich habe folgendes Problem:

Ich bekomme ein komplettes SQL-Statement, in dem sich möglicherweise HTML-Tags befinden. Wie kann ich diese herausfiltern, ohne meinen SQL-String zu zerstören.
Mein Problem ist, dass ich in dem SQL-String eventuell auch Vergleichsoperatoren wie "<", ">", "<>", ">=" und "<=" befinden, die ich natürlich nicht löschen möchte.

Wie würde z.B. eine ereg_replace-Expression aussehen, die das macht?
(Wenn es geht bitte mit einer kurzen Erklärung, da ich von regulären Ausdrücken in PHP nicht soviel verstehe)

Vielen Dank

Thomas

  1. Hi,

    Wie würde z.B. eine ereg_replace-Expression aussehen, die das macht?

    Gar nicht. S.u.

    (Wenn es geht bitte mit einer kurzen Erklärung, da ich von regulären Ausdrücken in PHP nicht soviel verstehe)

    Schon HTML alleine ist kaum mit Regex zu parsen.
    Wenn dann auch noch SQL dazwischen rumsteht, kann das nix werden.

    Benutze einen SQL-Parser, um die Teile zu finden, in denen Du HTML durch was auch immer ersetzen willst.
    Wende dann auf diese Teile einen HTML-Parser an.

    Der Erklärer

    1. Hi,

      Wie würde z.B. eine ereg_replace-Expression aussehen, die das macht?
      Gar nicht. S.u.

      (Wenn es geht bitte mit einer kurzen Erklärung, da ich von regulären Ausdrücken in PHP nicht soviel verstehe)

      Schon HTML alleine ist kaum mit Regex zu parsen.
      Wenn dann auch noch SQL dazwischen rumsteht, kann das nix werden.

      Benutze einen SQL-Parser, um die Teile zu finden, in denen Du HTML durch was auch immer ersetzen willst.
      Wende dann auf diese Teile einen HTML-Parser an.

      Der Erklärer

      hallo,

      also wenn du einfach das html loswerden willst, kannst du strip_tags() verwenden.

      mfg, steffen

  2. Hallo Forum!

    Ich habe folgendes Problem:

    Ich bekomme ein komplettes SQL-Statement, in dem sich möglicherweise HTML-Tags befinden.

    Woher bekommst du das SQL-Statement? Wenn das dort enthaltene HTML einigermaßen sinnvoll sein soll, dann muß es sich als Zeichenkette innerhalb von Anführungszeichen befinden, ansonsten ist dein Statement nämlich mit 99,999% Wahrscheinlichkeit ungültig. Insofern kollidiert es auch nicht mit Vergleichsoperatoren.

    Wie kann ich diese herausfiltern, ohne meinen SQL-String zu zerstören.

    Du erzählst über den Sinn und Zweck deiner Anwendung nichts - wie soll man da wissen, was für deine Situation sinnvoll ist? Schließlich bist du hier in ein Forum gelangt, in dem nicht nur simple Lösungen für deine Fragen gepostet werden - hier kriegst du gleich die umfassende Beratung, was häufiger dazu führt, dass das ursprüngliche Problem einfach gar nicht mehr auftritt. :)

    - Sven Rautenberg