Regina Schaukrug: HTML Überschriften Pharsen und Inhaltsverzeichnis erstellen

Beitrag lesen

Du meinst preg_match?

Das verträgt auch die Suche nach /<[hH][1-6]>(.*)<\/[hH][1-6]>/ als Pattern. Zudem willst Du wohl preg_machtch_all() verwenden:

<?php
$pattern = '/<[hH][1-6]>(.*)<\/[hH][1-6]>/';


$text = '
<h1>1) Erste, Erster Ordnung</h1>
<h2>1.1) Erstens, Erste Zweiter Ordnung</h2>
<h2>1.2) Erstens, Zweite Zweiter Ordnung</h2>

<h1>2) Zweitens, Erster Ordnung</h1>
<h2>2.1) Zweitens, Erste Zweiter Ordnung</h2>
<h2>2.2) Zweitens, Zweite Zweiter Ordnung</h2>
';

$foo = preg_match_all( $pattern, $text, $ar, PREG_OFFSET_CAPTURE);
var_dump($ar);
print "\n";

Ergebnis:

array(2) {
  [0] =>
  array(6) {
    [0] =>
    array(2) {
      [0] =>
      string(33) "<h1>1) Erste, Erster Ordnung</h1>"
      [1] =>
      int(1)
    }
    [1] =>
    array(2) {
      [0] =>
      string(44) "<h2>1.1) Erstens, Erste Zweiter Ordnung</h2>"
      [1] =>
      int(35)
    }
    [2] =>
    array(2) {
      [0] =>
      string(45) "<h2>1.2) Erstens, Zweite Zweiter Ordnung</h2>"
      [1] =>
      int(80)
    }
    [3] =>
    array(2) {
      [0] =>
      string(36) "<h1>2) Zweitens, Erster Ordnung</h1>"
      [1] =>
      int(127)
    }
    [4] =>
    array(2) {
      [0] =>
      string(45) "<h2>2.1) Zweitens, Erste Zweiter Ordnung</h2>"
      [1] =>
      int(164)
    }
    [5] =>
    array(2) {
      [0] =>
      string(46) "<h2>2.2) Zweitens, Zweite Zweiter Ordnung</h2>"
      [1] =>
      int(210)
    }
  }
  [1] =>
  array(6) {
    [0] =>
    array(2) {
      [0] =>
      string(24) "1) Erste, Erster Ordnung"
      [1] =>
      int(5)
    }
    [1] =>
    array(2) {
      [0] =>
      string(35) "1.1) Erstens, Erste Zweiter Ordnung"
      [1] =>
      int(39)
    }
    [2] =>
    array(2) {
      [0] =>
      string(36) "1.2) Erstens, Zweite Zweiter Ordnung"
      [1] =>
      int(84)
    }
    [3] =>
    array(2) {
      [0] =>
      string(27) "2) Zweitens, Erster Ordnung"
      [1] =>
      int(131)
    }
    [4] =>
    array(2) {
      [0] =>
      string(36) "2.1) Zweitens, Erste Zweiter Ordnung"
      [1] =>
      int(168)
    }
    [5] =>
    array(2) {
      [0] =>
      string(37) "2.2) Zweitens, Zweite Zweiter Ordnung"
      [1] =>
      int(214)
    }
  }
}