Pokerlog, kaarten omzetten naar plaatjes
Ik zit met het volgende probleem, ik ben geen held in reguliere expressies dus ik vraag het hier maar even.
Ik heb een pokerlog met daarin de volgende weergave van de kaarten "[Ad 8c 3s]". Deze 3 kaarten wil ik omzetten naar plaatjes, zodat de echte speelkaarten zichtbaar zijn.
Voorbeeld log:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
PokerStars Game #45202943340: Hold'em No Limit ($0.10/$0.25 USD) - 2010/06/07 22:52:44 CET [2010/06/07 16:52:44 ET]
Table 'Fogelin VI' 6-max Seat #6 is the button
Seat 1: BosnaDelight ($24.61 in chips)
Seat 2: Hooiplukker ($25 in chips)
Seat 4: Sedoy_sakh ($32.22 in chips)
Seat 6: Bernhard1954 ($8.38 in chips)
BosnaDelight: posts small blind $0.10
Hooiplukker: posts big blind $0.25
*** HOLE CARDS ***
Dealt to Hooiplukker [4h Kd]
Sedoy_sakh: folds
Bernhard1954: folds
BosnaDelight: calls $0.15
Hooiplukker: raises $0.75 to $1
BosnaDelight: calls $0.75
*** FLOP *** [Ad 8c 3s]
BosnaDelight: checks
Hooiplukker: bets $1
BosnaDelight: folds
Uncalled bet ($1) returned to Hooiplukker
Hooiplukker collected $1.90 from pot
*** SUMMARY ***
Total pot $2 | Rake $0.10
Board [Ad 8c 3s]
Seat 1: BosnaDelight (small blind) folded on the Flop
Seat 2: Hooiplukker (big blind) collected ($1.90)
Seat 4: Sedoy_sakh folded before Flop (didn't bet)
Seat 6: Bernhard1954 (button) folded before Flop (didn't bet)
Table 'Fogelin VI' 6-max Seat #6 is the button
Seat 1: BosnaDelight ($24.61 in chips)
Seat 2: Hooiplukker ($25 in chips)
Seat 4: Sedoy_sakh ($32.22 in chips)
Seat 6: Bernhard1954 ($8.38 in chips)
BosnaDelight: posts small blind $0.10
Hooiplukker: posts big blind $0.25
*** HOLE CARDS ***
Dealt to Hooiplukker [4h Kd]
Sedoy_sakh: folds
Bernhard1954: folds
BosnaDelight: calls $0.15
Hooiplukker: raises $0.75 to $1
BosnaDelight: calls $0.75
*** FLOP *** [Ad 8c 3s]
BosnaDelight: checks
Hooiplukker: bets $1
BosnaDelight: folds
Uncalled bet ($1) returned to Hooiplukker
Hooiplukker collected $1.90 from pot
*** SUMMARY ***
Total pot $2 | Rake $0.10
Board [Ad 8c 3s]
Seat 1: BosnaDelight (small blind) folded on the Flop
Seat 2: Hooiplukker (big blind) collected ($1.90)
Seat 4: Sedoy_sakh folded before Flop (didn't bet)
Seat 6: Bernhard1954 (button) folded before Flop (didn't bet)
Ik hoop dat jullie mij kunnen helpen. Ik wil dus een parser maken die deze log verwerkt en alles tussen [ en ] omzet naar echte plaatjes.
Heb je een specifiekere manier om dit te omschrijven?
Wil je dit trouwens gebruiken om bestaande logs om te zetten, of maak je deze logs nog steeds aan. Want anders kun je er misschien aan denken om deze logs anders op te stellen. misschien wel op een DB?
De datum/tijd kan uitgesloten worden met [a-zA-Z0-9][c|d|h|s|]
Dat met de datum tussen haakjes is inderdaad ook bijkomend probleem, daarom stel ik ook hier mijn vraag te kijken of jullie heir misschien een oplossing voor hebben.
Ik dacht aan alle spelkaarten in een array te gooien, maar dan moet er nog op 1 of andere manier gekeken worden of de waarde voorkomt in de array en tussen de 2 haakjes staan.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function parseCards($log) {
preg_match_all("_\[(.*)]_", $log, $matches);
foreach ($matches[1] as $match) {
$cards = explode(" ", $match);
$tmp = "";
foreach ($cards as $card) {
$img = $phpbb_root_path . "images/cards/" . strtolower($card) . ".gif";
if (file_exists($img)) {
$tmp .= "<img src=\"" . $img . "\" alt=\"" . $card . "\" />";
}
}
if ($tmp != "") {
$log = str_replace($match, $tmp, $log);
}
}
return $log;
}
preg_match_all("_\[(.*)]_", $log, $matches);
foreach ($matches[1] as $match) {
$cards = explode(" ", $match);
$tmp = "";
foreach ($cards as $card) {
$img = $phpbb_root_path . "images/cards/" . strtolower($card) . ".gif";
if (file_exists($img)) {
$tmp .= "<img src=\"" . $img . "\" alt=\"" . $card . "\" />";
}
}
if ($tmp != "") {
$log = str_replace($match, $tmp, $log);
}
}
return $log;
}