Autor | Zpráva | ||
---|---|---|---|
hal_sk Profil |
#1 · Zasláno: 24. 1. 2009, 14:43:23
Zdravím.
Mám nejaký text napr.: Fero|Cierny|fero@xxx.xx Anna|Mala|anna@yyy.yy A chcem vytvoriť skript, ktorý by takéto súbory previedol do premenných typu: $riadok1_email Skúšal som funkciu split, ale ten nepozná oddeľovač "|" (je nutný). Ďalej som nevedel, ako rozpoznať v danom súbore zalomenie riadku. Vďaka. |
||
DJ Miky Profil |
#2 · Zasláno: 24. 1. 2009, 14:53:39 · Upravil/a: DJ Miky
Pomůže ti funkce explode. A celé by to šlo udělat nějak takhle:
<?php $soubor=file('jmena.txt'); $jmena=array(); foreach($soubor as $radek) { $radek=explode('|',$radek); $jmena[]=array('jmeno' => $radek[0], 'prijmeni' => $radek[1], 'email' => $radek[2]); } ?> Pak k tomu můžeš přistupovat: $jmena[0]['email'] $jmena[1]['email'] $jmena[2]['email']... |
||
Měsíček Profil |
#3 · Zasláno: 24. 1. 2009, 15:17:27
Reaguji na uživatele hal_sk:
Lepším řešením je samozřejmě použít pole a funkci explode, jak ti zde ukázal DJ Miky, já bych ti chtěl jen poopravit tvou větu: "ale ten nepozná oddeľovač "|" (je nutný). ". Pozor není to pravda. <?php list($x_1, $x_2, $x_3)=split('[|.-]',"24|01|2009"); echo $x_1.$x_2.$x_3; ?> |
||
hal_sk Profil |
#4 · Zasláno: 24. 1. 2009, 19:56:51 · Upravil/a: hal_sk
Vďaka za pomoc.
Trochu som to skúmal, a momentálne ten môj skript vyzerá takto: Vstup: 514|8756294729|Paprca|Ondrej|034856239|zxcv@qwerty.net 514|753939543|Brekek|Ignac|0908432745|asdfg@wsad.de 514|4294482322|Max| Marek|04928482|ghjkk@gmail.com 514|8503274952|Abcl| Karol|97287492|tyuii@mago.us 514|9463284759|Xyz| Alena|0974838208|lkjhg@seznam.cz <? $file=fopen('ludia.txt','r'); $fread=fread($file,2048); $pole=explode(chr(13),$fread); $i=1; foreach($pole as $val) { $clovek[$i++]=explode('|',$val); } echo "<br>"; echo $clovek[2][3]; fclose($file); ?> Výstup: Ignac Už som sa bál, že sa nebude dať zistiť zalomenie riadku v súbore, ale našiel som funkciu chr, ktorý pod hodnotou 13 chápe zalomenie. A ešte povedzte mi prosím, ako sa vyrovnať s tým dĺžkovým argumentom vo funkcii fread. To vždy tam musím uviesť dĺžku výpisu? Súbory budú rôzne. Nedá sa tam napísať niečo ako "illimitable". |
||
keeehi Profil |
#5 · Zasláno: 24. 1. 2009, 20:05:17
hal_sk
místo chr(13) se dá použít "\n" což je zalomení řádku. délka souboru se dá nahradit za filesize("ludia.txt") |
||
Měsíček Profil |
#6 · Zasláno: 24. 1. 2009, 20:07:53
Já ti pomohu s tou délkou souboru. Můžeš použít tento princip:
$x = fopen(($_x="ludia.txt"),"r"); $y = fread($x,filesize($_x)); |
||
hal_sk Profil |
#7 · Zasláno: 24. 1. 2009, 20:22:43
A ešte malý dotaz.
Ako zabezpečím, aby sa index pola $val |
||
AM Profil * |
#8 · Zasláno: 24. 1. 2009, 20:28:35
Tak nepoužívej foreach, ale klasický for. Ale je to trochu krkolomné, slušní lidé indexují pole od 0, a zápis $clovek[$i++]= je taky trochu vepřový, pokud přidáváš na konec pole, stačí $clovek[]= . Soubor čti funkcí file_get_contents(jmeno_souboru).
|
||
keeehi Profil |
#9 · Zasláno: 24. 1. 2009, 20:29:41
ve skutečnosti
foreach($pole as $val) |
||
Časová prodleva: 16 let
|
0