alpha: html tag erkennen

Beitrag lesen

Erneut: ich meine alles was zwischen < und > steht soll ignoriert werden.

Dein Beispiel welches du hier bringst, ist kein gültiges html, wie der Test mit tidy beweist:

line 8 column 5 - Warning: <p> attribute "/foo/" lacks value
line 8 column 5 - Warning: <p> missing '>' for end of tag
line 8 column 5 - Warning: trimming empty <p>

Das hätte ich aber ohne tidy auch angenommen, dass das ungültig ist:

<p/foo/
was soll das bitte schön sein ??? - auf jeden Fall nicht html.

Ich suche aber noch nach einer besseren Lösung für das Problem.
Ich habe fast das Gefühl, dass ich der erste bin, der dieses Problem hat. Ein gültiges html vorausgesetzt, hat mein Ansatz aber bisher tadellos funktioniert. Ich versuche aber auf jeden Fall noch einen bessere Lösung zu finden. Ich behaupte ja nicht das mein bisheriger Ansatz perfekt ist.

Gruß.

»» »» Bitte zitiere vernünftig.
Erneut: zitiere bitte vernünftig.

»» es soll nichts ersetzt werden was zwischen < und > steht.
Vorher sagtest du noch folgendes:

»» »» »» Ich muss das Wort matchen welches nicht in einem html tag auftaucht.

Ein HTML-Tag ist aber mitnichten durch < und > begrenzt

»» Ich habs jetzt hinbekommen, in dem ich mit einer for Schleife und substr() mir einfach jedes Zeichen der Zeile ansehe. wenn ein < kommt ignoriere ich einfach alles bis wieder ein > kommt.

Der Ansatz ist aber defekt:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <title>Example</title>
  </head>
  <body>
    <p/foo/
    <p>bar</p>
  </body>
</html>


>   
> Deine Routine würde beim Ersetzen von 'foo' durch 'baz' folgendes ausspucken:  
>   
> [...]  
> ~~~html

  <body>  

>     <p/foo/  
>     <p>bar</p>  
>   </body>

[...]

Das Ergebnis sollte aber so aussehen:
[...]

<body>

<p/baz/
    <p>bar</p>
  </body>


> [...]