PHP html Code entfernen

Hi zusammen.

Wie kann ich zum Beispiel von einem Eingabewert:

folgendes erreichen:

oder Beispiel 2:
istzustand:

sollzustand:

Es soll sozusagen nur den „reinen“ HTML code enthalten ( ,…)!

Bei den html-Tags und , jedoch nicht!

Wie muss ich das angehen?

LG,
Sebastian

eigentlich würde ich Dir zu REGEX also „regular Expressions“ raten…
Aber dann auch wieder nicht…
Warum?
Weil html-Seiten auch andere Elemente enthalten, die die Ausgabe dann ruckzuck in Gefahr bringen können…
fehlerhafter html code, elemente in Javascript etc…

Wenn Du das allerdings ignorieren kannst, dann solltest du mit den regulären Ausdrücken die html-tags suchen können, dann im zweiten schritt überprüfen, ob es sich auch nicht um die ausgeschlossenen Tags handelt, die weiteren Inhalt haben dürfen und sollen…
Und dann im dritten schritt ersetzt Du einfach noch den gefundenen Beschreibungstext und bist glücklich… :wink:

die fertigen Regex kann ich Dir leider nicht liefern, weil ich da noch nie so wirklich durchgestiegen hab wie die aussehen müssten :wink:

Grüße
Munich

Hi Munich!

eigentlich würde ich Dir zu REGEX also „regular Expressions“

ist mir ein begriff… !

Aber dann auch wieder nicht…
Warum?
Weil html-Seiten auch andere Elemente enthalten, die die
Ausgabe dann ruckzuck in Gefahr bringen können…
fehlerhafter html code, elemente in Javascript etc…

Ja das ist mir klar, deshalb, werde ich auch alle „gefährlichen“ HTML / Script-Tags über eine modTags()-Funktion abfangen, bzw. ich kann eigentlich auch davon ausgehen, dass keine Daten herkommen, die gefährlich für meine Applikation sein könnten. Aber safety first!

Wenn Du das allerdings ignorieren kannst, dann solltest du mit
den regulären Ausdrücken die html-tags suchen können, dann im
zweiten schritt überprüfen, ob es sich auch nicht um die
ausgeschlossenen Tags handelt, die weiteren Inhalt haben
dürfen und sollen…
Und dann im dritten schritt ersetzt Du einfach noch den
gefundenen Beschreibungstext und bist glücklich… :wink:

die fertigen Regex kann ich Dir leider nicht liefern, weil ich
da noch nie so wirklich durchgestiegen hab wie die aussehen
müssten :wink:

habe gestern abend nun versucht über reg exp und der funktion preg_replace() die HTML tags zu finden und nach meinem System zu modifizieren.
Ich bin nun zu folgendem Ergebnis gekommen:

function modTags($tag, $string) {
$text = preg\_replace("/(.\*?)$tag\>/i", "\1$tag\>", $string);
return $text;
}

Jedoch kommt hier nun, die Fehlermeldungen:

Warning: preg\_replace() [function.preg-replace]: Unknown modifier 'p' in file.php on line 55

Line 55: $text = preg_replace("/(.*?)$tag>/i", „\1$tag>“, $string);

Der Fehler müsst in der Reg-Ex sein oder?

Aber welcher p??

LG;
Sebastian

Hallo Sebastian

habe gestern abend nun versucht über reg exp und der funktion
preg_replace() die HTML tags zu finden und nach meinem System
zu modifizieren.
Ich bin nun zu folgendem Ergebnis gekommen:

function modTags($tag, $string) {
$text = preg_replace("/(.*?)$tag>/i",
„\1$tag>“, $string);
return $text;
}

Überleg doch mal *genau*, was Du mit dem Ausdruck
„“ findest und was Du eigentlich finden
möchtest.

Den Ausdruck würde ich ansonsten etwas vereinfachen, also
etwa sowas:

$html=’

';

$tags = array(‚div‘,‚table‘,‚tr‘,‚td‘,‚p‘);

foreach( $tags as $tag ) {
$html = preg_replace( „/(?]+/i“,’’, $html );
}

echo $html;

Grüße

CMБ

1 Like

Hi CMБ.

OK, stimmt, mein Ausdruck würde suchen, jedoch nicht finden und deshalb auch nichts machen, stimmts?

$html=’

';

$tags = array(‚div‘,‚table‘,‚tr‘,‚td‘,‚p‘);

foreach( $tags as $tag ) {
$html = preg_replace( „/(?]+/i“,’’,
$html );
}

echo $html;

cool… du hast recht, dies funktioniert, jedoch noch kurz, was muss ich an der reg-ex ändern, dass er diesen Wert:

auch löscht?

Ich kenne mich bei dem hier garnicht aus:
„/(?]+/i“

Könntest du es mir erklären?

LG,
Sebastian

Hallo,

was muss ich an der reg-ex ändern, dass er diesen Wert:

auch löscht?

Ich kenne mich bei dem hier garnicht aus:
„/(?]+/i“

Könntest du es mir erklären?

Eigentlich nichts. Es sollte reichen, ‚span‘ mit
ins tag-Array aufzunehmen:

 ...
 $tags = array('div','table','tr','td','p',' **span**');
 ...

Was die Regex betrifft, so empfiehlt es
sich, sich selber den Friedl (3. Aufl.,
sehr gute deutsche Übersetzung) zuzulegen.
ISBN: 3897217201 Buch anschauen

Der Ausdruck lässt sich mit /x auch
übersichtlicher schreiben (und kommentieren):

 ...
 $rg = "/ ". # Start, oeffnender Begrenzer /
 " (?]+ ". # alles, solange kein \> kommt ([^]: negierte Zeichenklasse)
 "/ix "; # fertig, schliessender Begrenzer /
 $html = preg\_replace( $rg, '', $html );
 ...

Grüße

CMБ

Eigentlich nichts. Es sollte reichen, ‚span‘ mit
ins tag-Array aufzunehmen:


$tags =
array(‚div‘,‚table‘,‚tr‘,‚td‘,‚p‘,’ span’);

Das habe ich natürlich gemacht!

Was die Regex betrifft, so empfiehlt es
sich, sich selber den Friedl (3. Aufl.,
sehr gute deutsche Übersetzung) zuzulegen.
ISBN: 3897217201 Buch anschauen

Werde ich mir überlegen.

Der Ausdruck lässt sich mit /x auch
übersichtlicher schreiben (und kommentieren):


$rg = "/ ". # Start, oeffnender Begrenzer /
" (?]+ ". # alles, solange kein > kommt
([^]: negierte Zeichenklasse)
"/ix "; # fertig, schliessender Begrenzer /
$html = preg_replace( $rg, ‚‘, $html );

OK, danke!

Jedoch, wenn dieser Wert herkommt

Blatxt

Habe ich als output ‚‘, wie kann ich Blatxt erreichen?

LG,
Sebastian

Hallo

Jedoch, wenn dieser Wert herkommt

Blatxt

Habe ich als output ‚‘, wie kann ich
Blatxt erreichen?

Indem Du korrektes HTML verwendest?


Blatxt

d.h., innerhalb einer inline-style-Anweisung gibt es keine „“-Anführungs-
striche. Die falsche Ausgabe kommt vom Brauser, nicht vom PHP-Programm.

Grüße

CMБ