Re: [Dresden-pm] Vorkommen eines Elementes in einem String zählen
Andreas Kunert
akunert at main-rheiner.de
Die Aug 9 02:33:46 PDT 2005
Hallo Falk,
danke für die Antwort. Leider sind meine Perl-Kenntnisse rudimentär.
Daher fehlt mir ein Beispiel, wie ich aus einem String dann die
einzelnen Key/Value-Paare erhalten kann.
Beispiel, wie ich es derzeit mache:
<Ergebnisse>
<Heim>Bayern</Heim><Gast>Rostock</Gast><Resultat>0:3</Resultat>
<Heim>Dortmund</Heim><Gast>Bremen</Gast><Resultat>0:3</Resultat>
</Ergebnisse>
....
@spiele = ($ergebnisse =~ /<Heim>(.*?)<\/Heim>/g);
@results = ($ergebnisse =~ /<Resultat>(.*?)<\/Resultat>/g);
if(@spiele > @results){
print "es fehlt noch was\n";
$vollendet = 0;
} elsif (@spiele eq @results){
print "Spieltag erledigt\n";
$vollendet = 1;
}
Das Problem ist nämlich, dass bei Paarungen, die noch nicht
stattgefunden haben kein Resultat-Tag mitgeliefert wird.
Daher ist eine Prüfung auf
@ansetzungen = ($ergebnisse =~
/<Heim>(.*?)<\/Heim><Gast>(.*?)<\/Gast><Resultat>(.*?)<\/Resultat>/g)
bei diesen Paarungen ja nicht möglich.
Es sei denn, ich kann da mit regex das Resultat als "eventuell
vorhanden" kennzeichnen???
Zu der Zeile @spiele hätte ich noch ne Frage. Wie kann ich daraus dann
einen Eintrag basteln in der Form
<div class="ansetzung"><span>Bayern : Rostock</span><span>0:3</span></div>
Sollte sicherlich über eine Schleife gehen, die das Array/Hash/Liste
@ansetzungen durchsucht und die einzelnen Werte zuweist.
Aber ich vermute, dass die Treffer in der Form $heim1 = $ansetzung[0] ,
$gast1 = $ansetzung[1] .... eingetragen werden
GRuß Andreas
Falk Herrmann wrote:
>Ich würde einen Hash nehmen. Heim-Gast machst du zum Key und Ergebnis
>zum Value. Bevor Du es dann in die DB schiebst, einfach prüfen ob Value
>vorhanden ist.
>
>Aber was passiert denn, wenn ein Spiel wegen Nichtbespielbarkeit des
>Platzes, UFO Landung oder sonstiges ausfällt? Nachgeholt wird das Spiel
>ja dann meist nach mehreren Wochen. Mach dann einfach Value zu "- : -"
>und schieb es trotzdem in die DB.
>