Ahoj, už 3 hodiny se peru s triviálním řešením ale ne a ne aby to fungovalo jak chci.
Trochu to nastínim. Potřebuju vyndat data ze souboru, soubor má data např:
[12:45:55] [connection] incoming connection: 89.103.162.80:60491 id: 0
[12:45:56] [join] HippeCZE has joined the server (0:89.103.162.80)
[12:48:20] [death] HippeCZE died 53
[12:55:29] [death] HippeCZE died 255
[12:56:26] [part] HippeCZE has left the server (0:1)
[23:27:45] [connection] 89.103.162.80:61246 requests connection cookie.
[23:27:46] [connection] incoming connection: 89.103.162.80:61246 id: 0
[23:27:47] [join] HippeCZE has joined the server (0:89.103.162.80)
a protože to nejsou data, které bych mohl organizovat ale log z herního serveru chci jednotlivý body zapsat do mysql abych s tím mohl pracovat na webu
A to zvlášť ty časy, join connection atd...
Pro přetstavu do mysql potřebuju do tabulky join zapsat hodnoty z řádku, který obsahuje join, např. takhle
Čas, Jméno, text a IP
a to samý to co obsahuje death dát do tabulky death atd... má to několik dat.
Snad chápete jak to myslím.
-------------------------------------------
function sav(){
$log = file("log.txt");
foreach($log as $txt){
list($data) = explode("\n",$txt);
$vys[] = $data;
}
return $vys;
}
Tato funkce mi každej řádek z loglistu přidá do pole
$s = sav();
$txt = "[chat]";
foreach ($s as $value){
if(strstr($value,$txt)){
$data[] = $value;
}
}
tady vyvolávám funkci ale zobrazí mi pouze řádky, které obsahují slovo [chat]
výsledek je:
[13:15:46] [chat] [HippeCZE]: ahoj jak se máč
[13:17:21] [chat] [HippeCZE]: mam 4596$
takže to funguje jak chci, jenže teď nastává problém, chtěl jsem vytvořit další funkci abych pro každé data co chci nemusel tenhle script psát znova takže jsem udělal funkci
function log($hodnota){
$data=sav();
foreach($data as $value){
if(strstr($value,$hodnota)){
$t[] = $value;
}
}
return $t;
}
je to vlastně uplně to samý jako kod před tím, jenže by se to mělo vyvolávat příkazem log(HODNOTA); a né přes proměnnou;
Ale nemá to žádný výsledek
Takže jsem se na to zatím kašlal a pracoval s předchozím kodem.
$count = count($data); //tímto zjistím kolik má pole, se kterýcm chci pracovat, hodnot
for($x=0;$x<$count;$x++){
$ar[] = $data[$x];
}
tady všechny data co obsahují slovo [chat] dám zvlášť do pole
echo implode(" ",$ar); //tady ho vyvolám abych věděl jestli to funguje a vypíše to uplně to samý jako předtím jenže vedle sebe a ne po sebou.
No a teď z každýho toho pole chci rozdělit jednotlivý slova do pole a tím přes nějaký podmínky, nad tima jsem ale zatím nepřemýšlel odešlu do mysql.
$sub = count($ar);
for($x=0;$x<$sub;$x++){
$int = $ar[$x];
$to[] = implode(int, " ");
}
ale když chci vidět jak to dopadlo a použiju print_r výsledek je takový:
Array ( [0] => [1] => [2] => [3] => )
už sem zkusil několikrát pozměnit kod ale bud to neudělá žádný výsledek nebo to zobrazí tohle nebo vytvoří pole v poli, který je v poli.
Pokud jste alespon trochu pochopili co chci a můžete mi nějak poradit nebo alespon přiblížit, myslím si že se točím v nákym začarovanym kruhu a akorát pole co rozšifruju zase přidám do jinýho pole atd..
Jinak tohle není konečný script je to pouze script, který píšu abych zjistil jak to funguje takže v důsledku to bude vypadat uplně jinak, nicméně mi jde o to abych pochopil jak takhle věc má fugovat abych jí mohl zakomponovat do kódu.
Díky za případné komentáře