Delphi-Quellcode:
function StripHTMLTags(
const HTML:
string):
string;
var
TagDepth: integer;
i: integer;
ResultIndex: integer;
begin
TagDepth := 0;
ResultIndex := 1;
SetLength(result, length(
HTML));
for i := 1
to length(
HTML)
do
begin
case HTML[i]
of
'
<': inc(TagDepth);
'
>':
dec(TagDepth);
// ggf. hier prüfen, ob der Tag überhaupt schon geöffnet wurde (TagDepth > 0)
else
if TagDepth > 0
then
begin
result[ResultIndex] :=
HTML[i];
inc(ResultIndex);
end;
end;
end;
SetLength(result, ResultIndex);
end;
Im Antwortfenster aus dem Kopf getippt - ich kann daher nicht garantieren, dass es funktioniert. Der Ansatz ist einfach, einen String mit der gleichen Länge wie dem ursprungsstring zu erstellen (länger kann das Ergebnis ja nicht sein). Anschließend wird jedes Zeichen in einer Schleife in den Ergebnisstring übertragen, wenn nicht ein oder mehrere Tags geöffnet sind. Am Ende wird der String noch zu recht gestutzt.
Das ist aber nur eine einfache Methode, die man besser nicht auf allzu invaliden
HTML-Code loslassen sollte. Wenn man auf Nummer sicher gehen will/muss, sollte man besser einen Parser verwenden.