21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
Yuff.3
Profil
Ahojte,
mám list($ip, $steamid, $date, $name, $reason, $admin, $time) = explode('"', $string); kde $string = "95.102.129.190:15509" "STEAM_0:1:273027" "1424538624" "Rigi" "testoavci ban" "Yuff.3" "0"
Problém je asi hneď očividný. Ako dosiahnem, aby mi explodovalo každú druhú vec do premennej ?
ďakujem
Keeehi
Profil
explode('" "', trim($string, '"'));
mimochodec
Profil
Yuff.3:
Okrájej z toho ty uvozovky úplně na začátku a na konci a pak explode ('" "', $string)
Yuff.3
Profil
mimochodec:
čím to "okrájam" ?
Fisir
Profil
Reaguji na Yuff.3:
[#2]
Yuff.3
Profil
Fisir:
predtým tam mal iný zápis.

ĎAKUJEM všetkým.
Keeehi
Profil
Yuff.3:
Měl, ale se stejnou funkcionalitou.
Yuff.3
Profil
Keeehi:
to sa nehádam. A zisťujem, že toto nefunguje celkom presne ako by som chcel. Totiž posledná " zostane.. a teda výsledkom premnnej $time je (0") - kde " je nežiadúca.
Keeehi
Profil
Yuff.3:
No evidentně tam bude asi nějaký bílý znak, takže je potřeba ho přidat do výčtu znaků toho trimu.
1Pupik1989
Profil
Nebo využít preg_match a regulární výraz.
Yuff.3
Profil
Keeehi:
jak ho môžem pridať keď neviem ako ten "biely znak vyzerá" ?

1Pupik1989:
no áno, pokiaľ neprídem na to ako to vyriešiť týmto spôsobom - spravím to ako vravíš.
Keeehi
Profil
Yuff.3:
No já s tím těžko pomůžu, když ten vstup nemám k dispozici. Asi tam bude konec řádku nebo mezera ale to nemůžu vědět. Můžeš to projít třeba znak po znaku a zjistit čím to končí
for ($n=0;$n<strlen($string);$n++){ 
    echo ord($string[$n]).";"; 
} 

1Pupik1989:
Byl by vhodnější preg_split, ale to stejně nepomůže ořezu přebytečných znaků.
Yuff.3
Profil
Keeehi:
Asi nerozumiem ako mi to môže pomôcť.
ten kód mi vypísal toto: 34;57;53;46;49;48;50;46;49;50;57;46;49;57;48;58;49;53;53;48;57;34;32;34;83;84;69;65;77;95;48;58;49;58;50;55;51;48;50;55;34;32;34;49;52;50;52;53;51;56;54;50;52;34;32;34;82;105;103;105;34;32;34;116;101;115;116;111;97;118;99;105;32;98;97;110;34;32;34;89;117;102;102;46;51;34;32;34;48;34;10;34;49;57;53;46;49;54;56;46;50;48;57;46;52;58;50;55;48;48;53;34;32;34;83;84;69;65;77;95;48;58;49;58;51;54;50;55;49;48;54;56;34;32;34;49;52;50;52;53;52;52;53;56;55;34;32;34;114;114;114;114;82;114;114;114;114;34;32;34;68;114;117;104;121;32;112;111;107;117;115;110;121;32;98;97;110;32;114;114;114;114;82;114;114;114;114;44;32;100;108;104;121;63;63;34;32;34;89;117;102;102;46;51;34;32;34;53;48;34;10;34;49;57;53;46;49;54;56;46;50;48;57;46;52;58;50;55;48;48;53;34;32;34;83;84;69;65;77;95;48;58;48;58;49;48;56;56;57;49;54;51;49;49;34;32;34;49;52;50;52;53;52;54;50;57;52;34;32;34;84;111;32;110;105;101;32;106;97;32;116;111;32;109;111;106;101;32;65;66;34;32;34;106;97;34;32;34;89;117;102;102;46;51;34;32;34;110;105;101;34;10;

Asi tam bude konec řádku nebo mezera ale to nemůžu vědět.
pravdepodobne koniec riadku - jak to môžem teda odstrániť?
mimochodec
Profil
Yuff.3:
Zpátky k původní otázce. Píšeš tam, že

$string = "95.102.129.190:15509" "STEAM_0:1:273027" "1424538624" "Rigi" "testoavci ban" "Yuff.3" "0"

Takhle to asi nevypadá. Ukaž var_dump toho $string;
Keeehi
Profil
Yuff.3:
Pomůže ti to tak, že to vypsalo číselné kódy každého znaku. Dají se pak dohledat v ascii tabulce. Třeba 34 je uvozovka. A poslední 10 znamená nový řádek. Tedy ten bílý znak je znak nového řádku. Proto ten trim by měl mít tedy ($string, "\n\"")
Problém však je, že v $string nemáš jen jeden záznam ale 3. Takže si to nejdříve rozděl po záznamech. Ovšem při tomto dělení se pravděpodobně ty konce řádků ztratí, takže ta předchozí úprava nebude potřeba.
Yuff.3
Profil
mimochodec:
toto je celý presný obsah toho súboru:
"95.102.129.190:15509" "STEAM_0:1:273027" "1424538624" "Rigi" "testoavci ban" "Yuff.3" "0"
"195.168.209.4:27005" "STEAM_0:1:36271068" "1424544587" "rrrrRrrrr" "Druhy pokusny ban rrrrRrrrr, dlhy??" "Yuff.3" "50"
"195.168.209.4:27005" "STEAM_0:0:1088916311" "1424546294" "To nie ja to moje AB" "ja" "Yuff.3" "nie"
pristúpim k nemu cez ftp a cez explode sa snažím to rozbiť do premenných ako som už písal.

Keeehi:
Problém však je, že v $string nemáš jen jeden záznam ale 3. Takže si to nejdříve rozděl po záznamech.
prečo je to nutné?
jak to rozdelím?
Keeehi
Profil
Yuff.3:
prečo je to nutné?
No asi proto, že se jinak snažíš nacpat pole s 21 prvky do 7mi proměnných.

jak to rozdelím?
Že by explode podle nových řádků?
1Pupik1989
Profil
Keehi: S preg_matchem by nebylo třeba bílé znaky řešit. Prostě se vybere jen to mezi uvozovkami s použitím nežravého zápisu. Hned za preg_match se pak dá list.
Yuff.3
Profil
Keeehi:
Že by explode podle nových řádků?
nikde som sa nedočítal jak explode vysvetlím, že rieši nový riadok.. Vieš mi to vysvetliť prosím?

1Pupik1989:
s použitím nežravého zápisu.
to je aký?
Keeehi
Profil
explode("\n", $input);
lionel messi
Profil
Yuff.3:
to je aký?
Žravá varianta: .*
Nežravá: .*?

Regulár a* zachytí v slove „baaaaa“ všetky a vrátane, kým a*? len prvé. Žravá varianta zachytí maximálny počet znakov vyhovujúci reguláru, nežravá minimálny.
Yuff.3
Profil
Moc všetkým ďakujem.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0