Hey,
ich versuche gerade einen Code zu schreiben, mit dem ich eine Gliederung mit bis zu 4 Ebenen (ursprünglich aus Word, aber mittlerweile in HTML) in eine Datenbank zu bringen. Mein Ansatz ist den String (insgesamt knapp 300 Zeilen) in ein multidimensionales Array zu laden und dann an die DB zu schicken. Mein Code bisher will nicht so recht, irgendwie bekomme ich zu viele Array Ebenen (statt $endArray[1] = Forschung, $endArray[1][1] = FH, $endArray[1][2] = Forschungsinstitute etc). Außerdem taucht der Punkt Forschung gar nicht auf..
PHP-Code:
$str = "
<h1>Forschung</h1>
<h2>Fachhochschulen</h2>
<h2>Forschungsinstitute</h2>
<h2>Private Hochschulen</h2>
<h3>Konstanz</h3>
<h3>Marburg</h3>
<h1>nochmal h1</h1>
<h2>Forschungsinstitute</h2>
<h2>Private Hochschulen</h2>
";
$asArray = explode("\n",$str);
$h1 = 0;
$h2 = 0;
$h3 = 0;
$h4 = 0;
for($i = 0; $i < count($asArray); ++$i) {
$level = substr($asArray[$i],1,2);
if($level == "h1"){
$h1++;
preg_match_all("/<h1>(.+?)<\/h1>/is", $asArray[$i], $matches);
$endArray[$h1] = $matches[1];
} elseif ($level == "h2"){
preg_match_all("/<h2>(.+?)<\/h2>/is", $asArray[$i], $matches);
$endArray[$h1][$h2]= $matches[1];
$h2++;
} elseif ($level == "h3"){
preg_match_all("/<h3>(.+?)<\/h3>/is", $asArray[$i], $matches);
$endArray[$h1][$h2][$h3]= $matches[1];
$h3++;
} elseif ($level == "h4"){
preg_match_all("/<h4>(.+?)<\/h4>/is", $asArray[$i], $matches);
$endArray[$h1][$h2][$h3][$h4]= $matches[1];
$h4++;
}
}
echo "<pre>";
print_r($endArray);
echo "</pre>";
Für Hinweise, was ich mir näher anschauen sollte, wäre ich sehr dankbar!