[PHP] CMS mit div. Abschnitten -> Sitemap

unregiert

abgemeldet
22 April 2006
451
26
Meine Webseiten sehen soetwa aus:
Hans ist tot!
Jo so ist es. Hans ist tot ist h1.
Hans lebt?
Das wäre h2.
Juppi!
h3 nr 1.

Juppi!
h3 nr 2.

Und nun möchte ich, dass mir eine Sitemap wie gefolgt generiert werden sollte:
  • Startseite
    1. Hans ist tot
      1. Hans lebt?
        1. Juppi!
        2. Juppi
Ich habe mir gedacht, eine ACP zu programmieren, bei dem ich Titel (h1, h2, h3) rumschieben kann, und diese Elemente dann als Element in einer DB gespeichert werden sollten.

### ID ### ORDER ### TYPE ### CONTENT ### SITEID ###
### .1 ### ....1 ### h1 ### Hans... ### .....1 ###
### .2 ### ....2 ### h2 ### Hans... ### .....1 ###

Naja, diese Weise kommt mir etwas langweilig und ressurcenfressend vor. Weiss jeamnd eine andere Lösungsweise?
 
Ich weiß ja ned, wie du das alles aufgebaut hast, aber irgendwo hast du doch ne Liste von Seiten; sei es in der DB oder du gehst alle .html-Dateien im Filesystem durch.
Weiterhin nehm ich mal nicht an, dass du das on-the-fly generieren willst, also kannst du dir (also dem PHP-Interpreter) doch ruhig einmal am Tag die Arbeit machen und eine Minute lang alle Dateien nach den <h1>-, <h2>- und <h3>-Tags scannen und die Sitemap anlegen und abspeichern.
 
Naja, da wäre das Problem mit RegExp :)ugly:), und wie ich es dann realisiere, sprich, das ganze dann in einem Baum verfrachte, damit sowas nicht kommt:
  • Startseite
    1. H1'
    2. H1''
    3. H1'''
      1. H2' (H1')
      2. H2'' (H1'')
        1. H3' (H2')
        2. H3'' (H2')
        3. H3''' (H2'')
 
Naja, da wäre das Problem mit RegExp :)ugly:),[...]
Das würde sich schon lösen lassen.
[...] und wie ich es dann realisiere, sprich, das ganze dann in einem Baum verfrachte, damit sowas nicht kommt: [...]
Ich würde einfach - auch wenns sicher nicht voll effizient ist - eine Seite von oben nach unten nach einem <h?>-Tag scannen. Da brauchst dann nicht mal RegExp dazu.
Erhöht sich die Ebene, also musst du einrücken, dann ein neues <ol>-Tag öffnen. Verringert sich die Ebene, d.h. du musst wieder raus, dann <ol>s schließen.
 
Das würde sich schon lösen lassen.Ich würde einfach - auch wenns sicher nicht voll effizient ist - eine Seite von oben nach unten nach einem <h?>-Tag scannen. Da brauchst dann nicht mal RegExp dazu.
Erhöht sich die Ebene, also musst du einrücken, dann ein neues <ol>-Tag öffnen. Verringert sich die Ebene, d.h. du musst wieder raus, dann <ol>s schließen.
Hoppla, da bräuchte man aber dennoch RegExp. Und mehr als sowas kann ich nicht :(
PHP:
preg_match("<h(*.)>", $content, $treffer);

Habe ich dich richtig verstanden und du suchst dies hier?

Ja.
 
Hoppla, da bräuchte man aber dennoch RegExp. Und mehr als sowas kann ich nicht :(
Wenn ich keine Ahnung von RegExp hätte, würd ich einfach strpos() benutzen, um die 3 Möglichkeiten zu finden.
Mit RegExp so:
PHP:
preg_match('/<\/?h[123]>/i', $content, $matches);
(ungetestet wie immer)
Damit kriegst du alle <h1>, </h1>, <h2>, </h2>, <h3> und </h3>.