Datum zerlegen
IT-Frank
- php
0 WauWau0 Sven Schrodt0 IT-Frank
Hey Leutz
ich braeuchte mal eure Hilfe fuer eine Hausaufgabe unseres Dozenten die wir lösen sollen (irgentwie kam ich da nicht so richtig mit , obs am Montag lag -)))
Also wir haben eine Datei wo nicht das Datum im deutschen drin steht sondern in englischer Art und Weise
Datei heisst datum.txt drin steht
12 Jan 2000 IT Vorbereitungen
16 Jun 2000 IT Prüfung
was raus kommen soll, soll sein
20000112 IT Vorbereitung
20000616 IT Prüfung
das ganze mit explode
Danke schonmal im vorfeld....
Hallo IT-Frank,
Hey Leutz
Hallo Student! Wo? Außerdem dürfte ich dir gar nicht helfen, da ich erstens jünger bin als du (und dementsprechend noch nicht studiert habe ;-), und zweitens dein dozent sein könnte ;-)
ich braeuchte mal eure Hilfe fuer eine Hausaufgabe unseres Dozenten die wir lösen sollen (irgentwie kam ich da nicht so richtig mit , obs am Montag lag -)))
Oh - PHP in der Uni? Wie gut dass ich es jetzt schon kann.
12 Jan 2000 IT Vorbereitungen
16 Jun 2000 IT Prüfungwas raus kommen soll, soll sein
20000112 IT Vorbereitung
20000616 IT Prüfung
das ganze mit explode
Du meinst NUR explode()? Da musst du ja richtig mitdenken!
Wie will er nachweisen, dass ihr nur explode benutzt habt? Darfst du auch regular expressions nutzen?
Aaaalso, ich würde mal sagen, du explodierst (*g*) es erst mal per "\n", um die einzelnen daten rauszubekommen. Und wenn alles im Schema
DD MMM YYYY IT X*n
ist, kannst du hier gaaaanz einfach explodieren lassen, dass überlasse ich dir. Ansonten würde ich weiter mit preg_split() machen, und zwar an dem leerzeichen nach der jahreszahl.
DAs datum kannst du anschließend über strtotime() umsetzten lassen und daraus dann machen was du willst, oder du stellst das ganze neu zusammen, und zwar mit explode(); `;-)=
WauWau
Hey WauWau
Nee bin kein Student, nur ein Umschüler also bei einem Träger...
Problem ist das ich ehrlich gesagt nix verstanden hab... GRINZ
Um auf deine Frage zurueck zu kommen ob wir preg_split() dazu einsetzen koennen kann ich dir nichts sagen da er meinte dieses mit explode zu bewerkstelligen....
Hallo IT-Frank,
Nee bin kein Student, nur ein Umschüler also bei einem Träger...
was ist denn ein "umschüler"? -- und du hast mir immernoch nicht gesagt wo du studierst.
Problem ist das ich ehrlich gesagt nix verstanden hab... GRINZ
schlecht. Sag nicht du kannst gar nicht PHP...
Um auf deine Frage zurueck zu kommen ob wir preg_split() dazu einsetzen koennen kann ich dir nichts sagen da er meinte dieses mit
explode zu bewerkstelligen....
dann bleibt dir nix anderes übrig. Datei mit file() einlesen, in foreach-Schleife rein (ist mit arrays so optimal), die Leerzeichen mit explode() explodieren lassen [explode(" ", $zeile);], dann hast du z.B. folgendes:
array
{
[0] => "12",
[1] => "jun",
[2] => "2000",
[3] => "Das",
[4] => "ist",
[5] => "der",
[6] => "Text",
[7] ...
}
Hier fügst du die ersten 3 Elemente per implode mit einem leerzeichen zusammen, machst darauf strtotime oder wie das nochmal hieß, machst mit dem gewonnenen timestamp was du willst (z.B. per date() das rausbekommen, was du haben willst) und die elemente, die größer als 3 sind werden per implode() zu einem weiteren string zusammengeräumt, fertig. Das wird am ende alles zusammengepappt, und alle sind glücklich.
Gibt ein bisschen umstand, aber kaum. Ich muss ehrlich sagen, wenn man das im studium macht, könnte ich gleich morgen zur Goehte-Uni hier in Frankfurt geben (20km von mir entfernt) und mal bei einer Klausur mitschreiben - bin nur vielleicht ein bisschen jung ;-)
WauWau
<?php
$datei = file('messages');
foreach($datei as $line)
$ausgabe = explode(" ",$line);
{
[1] => "1"
so heisst also von die Zahl in Klammern sind fortlaufend
1 - 31 fuer die Tage
und 1 - 12 von Jan - Dez
richtig
ist das obige soweit richtig ??
Achso ein Umschueler ist jemand der seinen alten Beruf aufgrund von Krankheit nicht mehr ausfuehren kann also eine neue Ausbildung..
<?php
$datei = file('datei.txt');
$i = 0;
foreach($datei as $line){
$ausgabe[$i] = explode(" ",$line);
$i++;
}
?>
In dem array sind doch nun alle informationen drin.. jetzt muss doch nur noch nach Datum formatiert werden oder ???
Hallo IT-Frank,
<?php
$datei = file('datei.txt');
$i = 0;
foreach($datei as $line){
$ausgabe[$i] = explode(" ",$line);
$i++;
}
?>
In dem array sind doch nun alle informationen drin.. jetzt muss doch nur noch nach Datum formatiert werden oder ???
mal sehen ... -> [pref:t=76350&m=440106] ist es ja, genau *g*
WauWau
Schitt den Rest bekomme ich einfach nicht hin.... ich glaube das ist mein erstes Mangelhaft....
Hallo IT-Frank,
Schitt den Rest bekomme ich einfach nicht hin.... ich glaube das ist mein erstes Mangelhaft....
Wo liegt denn das Problem?
WauWau
Das ist keinen blassen Schimmer habe wie der Rest aufgebaut sein muss...
Wenn einer die Lösung hat wäre es nett diese bis 12 Uhr zu posten denn dann beginnt unser Unterricht....
Danke
Glück gehabt wir haben bis morgen noch Zeit, hat kaum einer hinbekommen also weiter gehts
Hallo IT-Frank,
Glück gehabt wir haben bis morgen noch Zeit, hat kaum einer hinbekommen also weiter gehts
hm - tud mir echt leid, vor 12 Uhr war ich leider noch nicht hier ;-)
Also, was funktioniert an meiner Lösung von da: [pref:t=76350&m=440106] nicht? Mann ich habe dir doch bereits eine Art fertigen Script geliefert, was willst du eigentlich noch mehr?
WauWau
Hey WauWau,
Also erstmal soweit recht herzlichen Dank fuer deine Hilfe,
war heute echt Klasse 80 % hatten das nicht hinbekommen also gabs verlängerung. Auf deine Frage hin welche Krankheit mir zu einer Umschulung verhalf war das ich 3 Bandscheibenvorfälle am Rücken kaputt habe und mehrere OP's hinter mir bringen musste und beide Knie kaputt sind also war mein Beruf als Tischler erledigt, also musste ich einen neuen Beruf erlernen, und so blieb die Umschulung als IT Fachinformatiker Systemintegration uebrig. Die Php Geschichte ist eigentlich eine einmalige Sache und gehört nicht zum Stoff, es geht im wesentlichen um Netzwerktechnik, OS Linux (mein Steckenpferd) Novell und natuerlich Microsh......
MySQL Datenbank Programmierung habe ich hintermir und hat auch Spass gemacht, nun folgt Speicherberechnung, und jede Menge Wirtschaftskram.... warum auch immer....
Nun gut ich hoffe ich konnte dir einen Ueberblick verschaffen.
Nun nochmal zum Script ich bekam einen Parse Error in 8
foreach($exp as $index => word) {
lag wohl daran das ein $ Zeichen vor Word fehlte,
nur setze ich dort ein $ Zeichen vor bekomme ich den Fehler in
Parse error: parse error, unexpected '}' in Line 13...
was ist hier noch falsch ????
war ein Semikolon Fehler hinter $new .= date("Ymd")." ".$description;
das Datum kommt jetzt schon raus nur folgt jetzt Fehlermeldung
Warning: Invalid argument supplied for foreach() in Line 8
Was nu wieder falsch
Kann es sein $old kein Array ist und $line leer ist und daher der Fehler ruehrt ??
Hallo IT-Frank,
Ich bin jetzt nicht so richtig mitgekommen, würde dich aber mal bitten, nicht so eine mit-sich-selbst-konversation zu machen.
Also, wo ist der Fehler?
Ach, und wegen des Datums, welches nur als 3-ziffrig zugrundeliegt:
Dann musst du ein Array erstellen, was sozusagen die "Buchstabenkombinationen" zu monatsdaten umsetzt, z.B. das folgende:
$bla = array("jan"=>1,"feb"=>2,"mar"=>3....
usw.
Ich baue es wenn du willst ein, wenn du mal den code, den du bis jetzt hast, postest. Dann schauen wir uns noch mal die Fehler an, und dann solltest du dich beeilen, denn du brauchst es bis morgen, nicht wahr?
Na gut, ich warte auf deine Antwort 8],
WauWau
Hallo WauWau
Hier der Code
<?php
$datei = file('testdatei');
$old = explode(" ",$line);
$new = "";
foreach($datei as $line)
{
$date = ""; $description = "";
foreach($exp as $index => $word) {
if($index <= 31)
$date .= " ".$word;
else
$description .= " ".$word;
}
$date = strtotime($date);
$new .= date("md")." ".$description;
}
print $new;
bin noch nicht weiter gekommen, sorry....
hab noch bis 14 Uhr Zeit....
Die spinnen die Römer, wir sollen das Script erweitern bis morgen um folgenden Punkt
Mar 21 Prüfungen: Nürnberg 210 Teilnehmer, München 40 Teilnehmern.
Jan 15 Prüfungen: Nürnberg 10 Teilnehmer, München 60 Teilnehmern.
Mar 11 Prüfungen: Nürnberg 30 Teilnehmer, München 10 Teilnehmern.
Jan 19 Prüfungen: Nürnberg 90 Teilnehmer, München 60 Teilnehmern.
Addiere die Teilnehmer zur Gesamtsumme und sortiere nach Datum
Ergebnis :
01 220 Teilnehmer
03 290 Teilnehmer
kannst du das direkt mit einbauen dann hab ich das erledigt ist Freitag eh der letzte Tag mit Php Gott Sei Dank......
Morgen ist Abgabetermin mit implementation der zusaetzlichen Aufgabe...
Lieber WauWau sei so lieb und stelle mir den Rest des Scripts zusammen ich kann es nicht mehr sehen das php -))
Hallo IT-Frank,
Morgen ist Abgabetermin mit implementation der zusaetzlichen Aufgabe...
hem, langsam wirds ja richtig kompliziert ;-)
also, ich versuch da mal was zu basteln. Erst mal der script, so wie du ihn mir gepostet hast mit "fehlerkorrektur":
<?php
$datei = file('testdatei');
$new = "";
foreach($datei as $line)
{
$date = ""; $description = "";
$exp = explode(" ",$line);
foreach($exp as $index => $word) {
if($index <= 31)
$date .= " ".$word;
else
$description .= " ".$word;
}
$date = strtotime($date);
$new .= date("md")." ".$description;
}
print $new;
?>
Ok, außer ein paar Logiksachen (die explode-funktion ist irgendwie aus der schleife gerutscht ;-) funktioniert ja jetzt alles soweit. Wie ich eben mitbekommen habe, willst du aber plötzlich was ganz anderes:
Mar 21 Prüfungen: Nürnberg 210 Teilnehmer, München 40 Teilnehmern.
Jan 15 Prüfungen: Nürnberg 10 Teilnehmer, München 60 Teilnehmern.
Mar 11 Prüfungen: Nürnberg 30 Teilnehmer, München 10 Teilnehmern.
Jan 19 Prüfungen: Nürnberg 90 Teilnehmer, München 60 Teilnehmern.
Addiere die Teilnehmer zur Gesamtsumme und sortiere nach Datum
Ergebnis :
01 220 Teilnehmer
03 290 Teilnehmer
Hm - das wird ja plötzlich immer einfacher? Oder ist das eine andere Aufgabe? Ach so, nach datum sortieren, super.
Naja, du kommst dort oben jedenfalls unmöglich mehr um kompliziertere funktionen wie reguläre ausdrücke oder so was rum (das würde ich dir sehr ans herz legen).
Also, machen wir uns mal daran, es würde sowas vorliegen:
[Jan/Feb/Mar/Apr/May/Jun/Jul/Aug/Sep/Nov/Dez] [TAG] Prüfungen: Ort [ANZAHL] Teilnehmer, Ort [ANZAHL] Teilnehmer.
Vorrausgesetzt, es bleibt _streng_ nach diesem muster, wirds jetzt recht einfach:
<?php
$datei = file("neue_aufgabe[...]");
$new = array(); // Da wird ein Array mit der Teilnehmerzahl und dem datum reinkommen, das noch sortiert werden müssen wird
foreach($datei as $eintrag)
{
preg_match("(\w \d\d) Prüfungen: \w (\d+), \w (\d+).", $matches);
// $matches[1] sollte jetzt z.B. "Mar 21" sein
// $matches[2] die Zahl der ersten Prüfung, z.B. 210
// $matches[3] die Zahl der zweiten prüfung, z.B. 40
$timestamp = strtodate($matches[1]);
$teilnehmer = $matches[2] + $matches[3];
$new[$timestamp] = $teinehmer;
}
$new = asort($new); // ksort = ältester termin zuerst, asort = neuster zuerst!
$counter = 1; //Zähler der dann hochzählt
$ausgabe = ""; // Endausgabe
foreach($new as $eintrag)
{
$ausgabe .= (strlen($counter) < count($datei) ? "0".$counter : $counter);
$ausgabe .= " ".$eintrag;
}
print $ausgabe;
?>
Wir können auch in E-Mail-Kontakt treten, wenn dir das hilft (dann kannst du besser sehen, ob ich dir schon geantwortet habe).
na dann,
WauWau
Hallo WauWau
Erstmal ein Dankeschön fuer deine Muehe, find ich echt gut vor allen Dingen find ich es lustig das du sagst es wird einfacher Naja seh ich anders -)))
Sag mal was kommt noch in die eckige Klammer ????
<?php
$datei = file("neue_aufgabe[...]");
<?php
$datei = file("neue_aufgabe[...]");
Ups hab die eckige Klammer raus genommen jetzt kommen aber folgende Fehler
Warning: Unknown modifier 'P' on line 8
Fatal Error Call to undefined function: strtodate() on line 12
Was das ???
Hey WauWau
Warum bekomme ich im ersten Script als Ausgabe
0324 0324 0324
obwohl dort doch folgendes drin steht
12 Jan 2000 IT Vorbereitungen
16 Jun 2000 IT Prüfung
???
<?php
$datei = file('messages');
$new = "";
foreach($datei as $line)
{
$date = ""; $description = "";
$exp = explode(" ",$line);
foreach($exp as $index => $word) {
if($index <= 31)
$date .= " ".$word;
else
$description .= " ".$word;
}
$date = strtotime($date);
$new .= date("md")." ".$description;
}
print $new;
?>
ACHTUNG da ist eine Sache die du sicherlich uebersehen hast und die wohl beabsichtigt eingebaut wurde schau mal
Mar 21 Prüfungen: Nürnberg 210 Teilnehmer, München 40 Teilnehmern
Teilnehmer und Teilnehmern
einmal ohne n und einmal mit....
Was fuer ein Schlitzohr der Dozent
Hallo IT-Frank,
Also, erst mal muss ich dir langsam aber sicher sagen: Deine 10 Postings _nerven_. Es ist viel, viel einfacher für mich, wenn du dir erst mal das anschaust, was ich gepostet habe, ausprobierst (meinetwegen), und dann zusammenschreibst, was dir einfällt. Du hast in jedem posting immer mal einen neuen einfall geschrieben, und das macht das ganze unübersichtlicher und die Möglichkeit, dir zu helfen, erschwert es (z.B. muss ich mir jetzt alles aus unterschiedlichen postings zusammensuchen).
Ich bitte dich also: Bitte schreibe mal nicht sooo viele postings.
Ach außerdem kannst du es ja gar nicht sooo eilig zu haben, denn du hast mir erst 40 Minuten später geantwortet.
so, und nun zum wesentlichen: ich werde mal "von oben nach unten" abbauen. Mein Script und die Fehler:
<?php
$datei = file("neue_aufgabe[...]");
// ^^^^^^^^^^^^^^^^^^
// Zu deiner Info: Hier soll lediglich der Dateiname hin, mehr nicht. DAs ist genauso wie bei dem ersten script.
$new = array();
foreach($datei as $eintrag)
{
preg_match("(\w \d\d) Prüfungen: \w (\d+), \w (\d+).", $matches);
// $matches[1] sollte jetzt z.B. "Mar 21" sein
// $matches[2] die Zahl der ersten Prüfung, z.B. 210
// $matches[3] die Zahl der zweiten prüfung, z.B. 40
$timestamp = strtodate($matches[1]);
// ^^^^^^^^^^
// Aua! Sorry, hier muss "strtotime" hin. Denn das macht aus dem string einen timestamp (ich werde es mal deines zeitmangels wegen nicht näher erklären)
$teilnehmer = $matches[2] + $matches[3];
$new[$timestamp] = $teinehmer;
}
$new = asort($new); // ksort = ältester termin zuerst, asort = neuster zuerst!
$counter = 1; //Zähler der dann hochzählt
$ausgabe = ""; // Endausgabe
foreach($new as $eintrag)
{
$ausgabe .= (strlen($counter) < count($datei) ? "0".$counter : $counter);
$ausgabe .= " ".$eintrag;
}
print $ausgabe;
?>
So, da hätten wir mal das erste "abgearbeitet".
Und dann deswegen: "Warning: Unknown modifier 'P' on line 8"
Das ist wegen meinem Regulären Ausdruck (preg_match). Der ist nämlich soweit recht falsch. Du musst wissen, dass ich nicht sooo gut in Regulären Ausdrücken bin, ich habe bis jetzt noch keine richtige deutsche doku gefunden :((. Also, verbessere mal die zeile mit preg_match auf das folgende:
preg_match("/(\w \d\d) Prüfungen: \w (\d+), \w (\d+)./i", $matches);
DAs müsste dann schon viel besser sein.
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
(TRENNLINIE),
und nun zum ERSTEN Script (bitte nicht verwechseln) - doch vorerst noch eine Frage:
___>> Bitte sage mir _endlich_, was deine gesamte Aufgabenstellung für die Aufgabe ist, die du morgen abgeben musst!!!
Ich habe übrigens nicht mehr so viel zeit... Um 20:15 kommt ein cooler Film im Fernsehen (RLT2), und entsprechend sollten wir uns vielleicht beeilen. Ich bin dafür, dass du in deinem Antwortposting 1. sagst was du insgesamt eigentlich willst und 2. die ergebnisse postest.
Ich bin nämlich ehrlich gesagt nicht dazu gekommen, die scripte zu testen, ich poste dir also hier nur dinge, von denen ich nicht weiß, ob sie so funktionieren (idr habe ich immer syntaxfehler drinnen, und dann noch ein paar logikfehler). Wenn du mir also endlich gesagt hast, was du willst, und mir die datei, die übrigens umgewandelt wird mal postetst (oder schicke sie mir per E-Mail), wäre das auch ganz super.
So, zum ersten:
Dein posting:
Hey WauWau
Warum bekomme ich im ersten Script als Ausgabe
0324 0324 0324
obwohl dort doch folgendes drin steht
12 Jan 2000 IT Vorbereitungen
16 Jun 2000 IT Prüfung
???
<?php
$datei = file('messages');
$new = "";
foreach($datei as $line)
{
$date = ""; $description = "";
$exp = explode(" ",$line);
foreach($exp as $index => $word) {
if($index <= 31)
$date .= " ".$word;
else
$description .= " ".$word;
}
$date = strtotime($date);
$new .= date("md")." ".$description;
}
print $new;
?>
Hmmmm ... "0324" sieht aus wie der 24.03. (ausgabe von date("md") wahrscheinlich). Ich würde es gerne mal bei mir ausprobieren, also ich denke, wir müssten es langsam aber sicher mal per e-mail machen
(ansonsten sind die hier sauer, weil du die prüfungsdaten postest ;-)
WauWau
PS: Ach ja, wenn dein Dozent/Proffessor das rausbekommt hier, dann bist du wegen täuschung dran...
Hey WauWau
Oki meine Mailadresse hab ich gesetzt....
also auf Script1 zurueck zu kommen
immer noch Ausgabe 0324 0324 0324
zweites Script Fehler
Fatal error: Call to undefined function: strtodate() in line 33
timestamp Zeile...
wenn du testen willst mach das doch die Daten hast du doch..
wegen meinem Dozenten mach dir mal keine Gedanken du glaubst doch nicht das ich sowas mit meinem richtigen Namen poste...
Hallo IT-Frank,
wegen meinem Dozenten mach dir mal keine Gedanken du glaubst doch nicht das ich sowas mit meinem richtigen Namen poste...
natürlich nicht. Naja, war auch nur so eine Idee.
Ich werde zwei Dateien aufsetzten und dir das ding mal zumailen.
WauWau
erstes Script
<?php
$convert = array("Jan" => "01",
"Feb" => "02",
"Mar" => "03",
"Apr" => "04",
"May" => "05",
"Jun" => "06",
"Jul" => "07",
"Aug" => "08",
"Sep" => "09",
"Oct" => "10",
"Nov" => "11",
"Dec" => "12");
$arr = file('testdatei');
$datei = $arr; // for testing only
foreach($datei as $line)
{
$exp = explode(" ",$line);
$dates .= $exp[2].$convert[$exp[1]].$exp[0]." ".$exp[3]."<br>";
}
print $dates;
?>
Hallo IT-Frank,
erstes Script
<?php
$convert = array("Jan" => "01",
"Feb" => "02",
"Mar" => "03",
"Apr" => "04",
"May" => "05",
"Jun" => "06",
"Jul" => "07",
"Aug" => "08",
"Sep" => "09",
"Oct" => "10",
"Nov" => "11",
"Dec" => "12");$arr = file('testdatei');
$datei = $arr; // for testing onlyforeach($datei as $line)
{
$exp = explode(" ",$line);
$dates .= $exp[2].$convert[$exp[1]].$exp[0]." ".$exp[3]."<br>";}
print $dates;
?>
Und wo hast du das jetzt her....?
WauWau
Schulkollege hat mir das geschickt
Hallo IT-Frank,
Schulkollege hat mir das geschickt
na gut, ich schicke dir jetzt per e-mail das andere, dann dürftest du es haben 8]
WauWau
Sorry hab was uebersehen
ausgabe geht jetzt lag an strtotime
jetzt nur noch einen Fehler in 21
Warning: Invalid argument supplied for foreach() in /var/www/microfun.de/html/singlecharts/admin/trafficzaehlen1.php on line 21
01 Jan 19 Prüfungen: Nürnberg 90 Teilnehmer, München 60 Teilnehmer.
nur stimmt da trotzdem was mit dem Datum nicht....
wenn du gelesen hast wurde in der Datei eine kleine Tücke eingebaut
und zwar Teilnehmer und Teilnehmern also mit n am Ende fürs zweite Script
Mar 21 Prüfungen: Nürnberg 210 Teilnehmer, München 40 Teilnehmern.
Jan 15 Prüfungen: Nürnberg 10 Teilnehmer, München 60 Teilnehmern.
Mar 11 Prüfungen: Nürnberg 30 Teilnehmer, München 10 Teilnehmern.
Jan 19 Prüfungen: Nürnberg 90 Teilnehmer, München 60 Teilnehmern.
Sorry musste es nochmal posten
Hallo IT-Frank,
Sorry hab was uebersehen
ausgabe geht jetzt lag an strtotime
aha. Und was gab er aus? Also kannst du mal ein paar zeilen beispiel wie sie eingegeben (fürs script) und dann vom script ausgegeben wurden?
jetzt nur noch einen Fehler in 21
Warning: Invalid argument supplied for foreach() in /var/www/microfun.de/html/singlecharts/admin/trafficzaehlen1.php on line 21
sehr schön, danke. Ich weiß nur leider nicht, wo bei deinem script die zeile 21 ist. Kann aber nur das sein:
foreach($new as $eintrag)
Ist aber nix falsch dran.
01 Jan 19 Prüfungen: Nürnberg 90 Teilnehmer, München 60 Teilnehmer.
nur stimmt da trotzdem was mit dem Datum nicht....
haha! Hier haben wir auch nicht das "Format"
"[Monat] [Zahl] Prüfungen: Text [Zahl] Text, text [zahl] text"!
Denn danach wie das folgende zitat es mich schließen lassen würden alle einträge so aussehen:
Mar 21 Prüfungen: Nürnberg 210 Teilnehmer, München 40 Teilnehmern.
Jan 15 Prüfungen: Nürnberg 10 Teilnehmer, München 60 Teilnehmern.
Mar 11 Prüfungen: Nürnberg 30 Teilnehmer, München 10 Teilnehmern.
Jan 19 Prüfungen: Nürnberg 90 Teilnehmer, München 60 Teilnehmern.
hmmm - außerdem ist das teilnehmer/teilnehmern kein problem, denn das:
preg_match("(\w \d\d) Prüfungen: \w (\d+), \w (\d+).", $matches);
Findet folgendes:
"[Ein Wort] [zwei zifferrn] Prüfungen: [Ein Wort] [egal wie viele zahlen], [ein Wort] [egal wie viele Zahlen]."
Dabei ist es egal, was das Wort jetzt genau ist, hauptsache es sind ein paar buchstaben.
WauWau
Hab noch folgenden Fehler im Script
Warning: Invalid argument supplied for foreach() on line 8
Achso ich vergas, das Datum beinhaltet nur ersten drei Buchstaben
zum Beispiel
23 Mar Heute keine Hausaufgaben
Hallo IT-Frank,
<?php
$datei = file('messages');
foreach($datei as $line)
$ausgabe = explode(" ",$line);{
[1] => "1"
so heisst also von die Zahl in Klammern sind fortlaufend
? Nein, mein Beispiel hier war etwa das, was etwa print_r mit deiner Variable $ausgabe in deinem Script da oben rausbringen würde.
1 - 31 fuer die Tage
und 1 - 12 von Jan - Dez
richtig
was? Sofern ich richtig verstanden habe, willst du aus dem da
12 april 2000
sowas
20001204
oder? Dann würde ich den String da durch strtodate schicken.
ist das obige soweit richtig ??
hm - warte mal, gehen wir mal von folgender Datei aus:
messages:
12 april 2000 Das ist der Text dazu
5 june 1989 IT irgendwas
und nun der script
$datei = file('messages');
$old = explode(" ",$line);
$new = "";
foreach($old as $line)
{
$date = ""; $description = ""; // Englisch ist doch immer wieder toll
foreach($exp as $index => word) {
if($index <= 4)
$date .= " ".$word;
else
$description .= " ".$word
}
$date = strtotime($date);
$new .= date("Ymd")." ".$description;
}
print $new; // oder mach sonstwas mit new
Herauskommen sollte dabei:
20001204 Das ist der Text dazu
19890605 IT irgendwas
Naja. Du kannst es dir ja auf deine Bedürfnisse umschneiden. Oder vielleicht sollt ihr auch was ganz anderes machen.
Achso ein Umschueler ist jemand der seinen alten Beruf aufgrund von Krankheit nicht mehr ausfuehren kann also eine neue Ausbildung..
Aha. Was hattest du denn für eine Krankheit und was willst du werden? Du scheinst also nicht einer von den "klassischen" Informatikstudenten zu sein?
WauWau
Hi Wauwau!
Hallo Student! Wo? Außerdem dürfte ich dir gar nicht helfen, da ich erstens jünger bin als du (und dementsprechend noch nicht studiert habe ;-), und zweitens dein dozent sein könnte ;-)
Ach?
Aaaalso, ich würde mal sagen, du explodierst (*g*) es erst mal per "\n", um die einzelnen daten rauszubekommen.
Wozu? Die Daten stehen in einer Datei- die kann er zeilenweise einlesen.
Innerhalb einer While-Schleifen und dann jede Zeile mit exlode zerlegen und in ein array überführeng - anders zusammsetzen und ausgeben..
Gruß Sven
Hallo Sven,
Hallo Student! Wo? Außerdem dürfte ich dir gar nicht helfen, da ich erstens jünger bin als du (und dementsprechend noch nicht studiert habe ;-), und zweitens dein dozent sein könnte ;-)
Ach?
klar ;-)
Aaaalso, ich würde mal sagen, du explodierst (*g*) es erst mal per "\n", um die einzelnen daten rauszubekommen.
Wozu? Die Daten stehen in einer Datei- die kann er zeilenweise einlesen.
ach so - stimmt, denkfehler. Dann kann er sich das sparen und es eben so machen.
Innerhalb einer While-Schleifen und dann jede Zeile mit exlode zerlegen und in ein array überführeng - anders zusammsetzen und ausgeben..
jep.
WauWau
Hallo IT(!)-Frank,
[...]
das ganze mit explode
Damit hast Du doch schon die Lösung..oder?
et voilà:
http://de2.php.net/manual/de/function.explode.php
Oder was genau bereitet die Schwierigkeit?
Rätselnd Sven
Die Schwierigkeit liegt eigentlich in der ganzen Aufgabe -)))
Die Wandlung des Datums macht mir Kopfschmerzen....
Hi!
Die Schwierigkeit liegt eigentlich in der ganzen Aufgabe -)))
Die Wandlung des Datums macht mir Kopfschmerzen....
Mehrere Möglichkeiten - ich kenne ja nicht die gesamte Aufgabe und die Rahmenbedingungen.. also z.B. mit einem Assozitiven Array als "Hilfe":
$monat["JAN"]="01";
$monat["FEB"]="02";
...
$monat["DEZ"]="12";
hilft das?
Sven
Es soll einfach wie in meiner Anfrage erwähnt das Resultat in deutschem Datum raus kommen, es sagte nur das das mit explode zu bewerkstelligen sei...
aber dein obiges Beispiel teste ich erstmal aus...
OKI fangen wir mal oben an
<?php
$datei = file('datum.txt');
was käme als naechster Schritt der anzuwenden wäre damit ich es auch verstehe und nicht einfach zusammen stelle..
Wenn du so nett wärst und mir den Code geben könntest damit ich zumindest die Datumsangaben ausgelesen bekomme in eine Variable wäre ich dir sehr dankbar den Rest denke ich bekomme ich mit dem Array selber hin..