| 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: 17 let
|
|||
0