Heute habe ich meine Datenbank an alten Blog-Artikeln ausgemistet. Dabei wollte ich unter anderem eine Auflistung sämtlicher veröffentlichter Artikel, also keine Entwürfe – und zwar menschenlesbar. Gar nicht so einfach, wie sich herausstellen sollte. Im Endeffekt habe ich eine frische WordPress-Installation an die alte Datenbank angebunden, die veröffentlichten Artikel als XML exportiert, diese XML dann mit PHP aufbereitet und als HTML ausgegeben. Das selbe lässt sich dank der filterbaren Export-Funktion von WordPress auch nach Entwürfen oder einem speziellen Autor, Kategorie oder Datum filtern und dann weiter verarbeiten.
Ich setze in dieser Anleitung voraus, dass eine Datenbank mit den alten Artikeln bereits bereitsteht, sowie ein lokaler Webserver installiert ist.
<?php
$xml = file_get_contents(‚<dateiname>‘);
$xml = simplexml_unCDATAise($xml);
$result = simplexml_load_string($xml,’SimpleXMLElement‘,LIBXML_NOCDATA);
$ns = $result->getNamespaces(true);
foreach ($result->channel->item as $itm) {
echo ‚<h1>‘ . $itm->title . ‚</h1> (‚ . $itm->pubDate . ‚)<br /><br/>‘;
echo $itm->children($ns[‚content‘]);
echo ‚<hr/>‘;
}function simplexml_unCDATAise($xml) {
$new_xml = NULL;
preg_match_all(„/\<\!\[CDATA \[(.*)\]\]\>/U“, $xml, $args);if (is_array($args)) {
if (isset($args[0]) && isset($args[1])) {
$new_xml = $xml;
for ($i=0; $i<count($args[0]); $i++) {
$old_text = $args[0][$i];
$new_text = htmlspecialchars($args[1][$i]);
$new_xml = str_replace($old_text, $new_text, $new_xml);
}
}
}return $new_xml;
}
?>
<dateiname> selbstverständlich durch den Namen der XML-Datei ersetzen. Das Script ist nicht perfekt, nur auf die Schnelle zusammenkopiert aus PHP-Doku und StackOverflow. Wenn man die PHP-Datei nun im Browser aufruft, sollte man eine einigermaßen lesbare Ansicht der ehemaligen Blog-Artikel vorfinden, so dass sich der Text einfach weiterverarbeiten lässt.
Kommentar verfassen