Diese Lösung verwendet Regex. Ich werde Sie entscheiden lassen, ob es komplex ist oder nicht.
$out = preg_replace("/(?<=^|>).*?(?=<|$)/s", "", $in);
Lassen Sie uns es brechen:
(?<=^|>)
: Ein Lookbehind. Nicht wirklich abgestimmt, aber es muss immer noch da sein. Entspricht entweder dem Anfang der Zeichenfolge (^
) oder dem Literal >
.
.*?
: Entspricht allem (s
Modifikator macht es newline). Das Fragezeichen macht es faul - es passt so wenig Zeichen wie möglich.
(?=<|$)
: Ein Lookahead. Entspricht entweder dem Literal <
oder dem Ende der Zeichenfolge ($
).
Dies wird durch nichts (""
) ersetzt, so dass alles, was zwischen >
und <
gelöscht. Eine funktionierende Demo kann gesehen werden here. Whitespace wird nicht beibehalten. Sie erhalten also eine super lange Zeile.
EDIT: Wenn Sie wissen, dass Ihre Eingabe wird immer in HTML-Tags eingewickelt werden, können Sie es für sich selbst machen noch einfacher, da man über den Anfang und das Ende der Zeichenfolge Bits müssen nicht denken:
$out = preg_replace("/>.*?</s", "><", $in);
Diese Variante funktioniert nicht für die Eingabe mit Text am Anfang oder Ende - zum Beispiel wird Hello<b></b>!
.
Verwenden Sie einen DOM-Parser. – David
Oder probieren Sie diese https://code.google.com/p/phpquery/ –