Willkommen in der Webstatt Zum Webstatt Blog und Stories
fish fish am 23.06.07 13:47

guten tag, liebe freunde der regular expressions! ich brauch euere hilfe...

ich brauche eine xml-datei von diesen daten hier: http://www.destatis.de/jetspeed/portal/cms/Sites/destatis/Internet/DE/Content/Statistiken/Zeitreihen/LangeReihen/Bildung/Content100/lrbil01a,templateId=renderPrint.psml

da das ein ziemlicher aufwand für 6 bis 7 genau gleich aufgebaute tabellen diese in xml zu verwandeln (nd das für jeden im kurs), frage ich mich, ob man das nicht mit regex lösen könnte.
also ich nehme mal an, ich will nur den teil mit den daten behandeln, den ich bereits aus dem quelltext kopiert habe.
also eine tabellenzeile sieht so aus:
<tr>
<td class="Vorspalte" rowspan="1"><span>2005</span></td>
<td><span>1.985.765</span></td>
<td><span>1.037.143</span></td>
<td><span>948.622</span></td>
<td><span>1.737.408</span></td>
<td><span>912.696</span></td>
<td><span>824.712</span></td>
</tr>

wenn es dann in xml ist sollte es so ausschaun:

<jahr id="2005">
<insgesamt>1985765</insgesamt>
<maennlich>1037143</maennlich>
<weiblich>948622</weiblich>
</jahr>


(die letzten 3 zellen fallen weg)

geht das?

netcup.de Warum gibt es hier Werbung?
crooked am 23.06.07 16:24

Wenn ich das richtig verstanden habe, willst du aus <td><span>1.985.765</span></td>, <maennlich>1.985.765</maennlich> machen?

//e: Welche Sprache?

fish fish am 23.06.07 20:41

ich will dass um die erste zahl ein <insgesammt>zahl</insgesamt aus der zweiten ein<maennlich>zahl</maennlich> und aus der dritten ein <weiblich>zahl</weiblich> wird. mit php. und aus der jahreszahl soll ein <jahr id="zahl"> werden

so wie oben beschrieben.

crooked am 24.06.07 08:57

Und wo steckst du dann die anderen Sachen hin? Also die drei Spalten die bei Deutsche stehen. Wie wird das in die XML-Datei gepackt?

nuit nuit am 24.06.07 12:40

Quote
Original von crooked
Und wo steckst du dann die anderen Sachen hin? Also die drei Spalten die bei Deutsche stehen. Wie wird das in die XML-Datei gepackt?

naja das erste ist eh nur insgesamt....also maennlich und weiblich zusammen...und die letzten 3 Spalten sind aufgeteilt in nur Deutsche, was anscheinend auch nicht wichtig ist :D

mh..ich würde es nicht über 1 RegEx machen...sondern über 1 Regex ders ausliest und dann eine xml generiert

so?:
http://moonsword.info/test.php

das wird jetzt generiert mit:
<pre>
<?php
$content = file_get_contents("http://www.destatis.de/jetspeed/portal/cms/Sites/destatis/Internet/DE/Content/Statistiken/Zeitreihen/LangeReihen/Bildung/Content100/lrbil01a,templateId=renderPrint.psml");
preg_match_all('/<td class="Vorspalte".*?<span>(.*?)<.*?<span>(.*?)<.*?<span>(.*?)<.*?<span>(.*?)</is',$content,$match);
#print_r($match);
$buffer = '';
for($i = 0; $i < count($match[0]); $i++) {
$buffer .= "\t<jahr id='{$match[1][$i]}'>\n";
$buffer .= "\t\t<insgesamt>".str_replace('.','',$match[2][$i])."</insgesamt>\n";
$buffer .= "\t\t<maennlich>".str_replace('.','',$match[3][$i])."</maennlich>\n";
$buffer .= "\t\t<weiblich>".str_replace('.','',$match[4][$i])."</weiblich>\n";
$buffer .= "\t</jahr>\n";
}

print htmlentities($buffer);
?>
</pre>

die str_replace sind nur drin um diese punkte zu entfernen ;) eigentlich sind sie ja nicht wichtig... :D das htmlentities um das ganze anzuzeigen...brauchst du eigenlich a uch nicht

fish fish am 24.06.07 15:10

GEIL, danke schonmal...

kann man das jetzt noch nach jahreszahl andersrum ordnen?

[COLOR=silver][SIZE=10]yeah 1337 posts[/SIZE][/COLOR]

nuit nuit am 24.06.07 19:29

jaaa..musste die for schleife umdrehen
for($i = count($match[0])-1; $i >= 0; $i--) {
$buffer .= "\t<jahr id='{$match[1][$i]}'>\n";
$buffer .= "\t\t<insgesamt>".str_replace('.','',$match[2][$i])."</insgesamt>\n";
$buffer .= "\t\t<maennlich>".str_replace('.','',$match[3][$i])."</maennlich>\n";
$buffer .= "\t\t<weiblich>".str_replace('.','',$match[4][$i])."</weiblich>\n";
$buffer .= "\t</jahr>\n";
}

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt