HTML-Code mittels PHP validieren

xanthos

Mitglied
Guten Tag

Ich bin neu hier im Forum und habe auch gleich meine erste Frage. Trotz ausgiebiger Suche über Google und auch hier im Forum habe ich leider noch keine Antwort darauf gefunden.

Über einen wysiwyg-Texteditor kann man auf meiner Page einen Text schreiben, der auch HTML-Code enthalten darf. Nun zu meiner Frage: Gibt es eine Möglichkeit diesen HTML-Code mittels PHP zu validieren oder andernfalls von der Hauptseite so abzuschotten (ohne Frames oder iFrames), dass dieser keinen Einfluss auf den "Haupt"-HTML-Code hat?

Viele Grüsse
Xanthos
 
W3C Schnittstelle

Hier könnten einige Links für dich dabei sein.

Und nein, ohne es als gesondertes Element zu parsen (also in einem Frame) werden Fehler in diesem Bereich auch immer die Hauptelemente stören können.
 
Hallo Felix

Vielen Dank für die schnelle Antowrt. Anschliessend habe ich gleich noch eine weitere Frage: Ich möchte alle Sonderzeichen ausserhalb der HTML-Tags durch den entsprechenden HTML-Code ersetzen lassen. Habe da an sowas gedacht:

PHP:
preg_replace('/(^|>)([^<]*)($|<)/','$1'.htmlentities('$2').'$3',$text);

Aber htmlentites() scheint in preg_replace() nicht zu funktionieren. Hat jemand eine Idee, wie ich das sonst umsetzen könnte?

Viele Grüsse
Simon
 
Bin einen Schritt weiter gekommen:

PHP:
  $html = 'Link:< <a href="">"äöü"</a>';

  preg_match_all('/([^<]*)($|(<[^>]+>))/', $html, $treffer, PREG_SET_ORDER);

  foreach($treffer as $erg) {
    echo htmlentities($erg[1],ENT_QUOTES).$erg[2];
  }

Ergebnis
Code:
Link:< <a href="">&quot;&auml;&ouml;&uuml;&quot;</a>

Bis auf < wird alles umgewandelt...

Hat jemand eine Idee, wie das mit der spitzen Klammer auch noch klappen könnte?
 
Interessant, wusste nicht, dass da jetzt noch ein weiterer Parameter (double_encode) möglich ist. Das Problem ist nur: Auf meinem Server ist PHP 5.1.6 installiert und double_encode läuft erst ab 5.2.3...

Also werde ich das wohl oder übel mit RegEx bewerkstelligen müssen :eek:
 
Nein, mein Fehler.
Selbst Double Encode hätte dir hier nicht geholfen, da es nur verhindert, das doppelt maskiert wird, also aus &amp; nicht &amp;amp; wird.
 
Hab' ihn :D:

PHP:
  $html = '>Link:< <a href="">"äöü"</a>';

  preg_match_all('/([^<]*[^>]*)($|(<[^>]+>))/', $html, $treffer, PREG_SET_ORDER);

  foreach($treffer as $erg) {
    echo htmlentities($erg[1],ENT_QUOTES).$erg[2];
  }

Ergebnis:

Code:
&gt;Link:&lt; <a href="">&quot;&auml;&ouml;&uuml;&quot;</a>

Dennoch vielen Dank für deine Hilfe, Felix.
 

Neue Beiträge

Zurück