Autor | Zpráva | ||
---|---|---|---|
Folker Profil |
#1 · Zasláno: 20. 2. 2011, 18:51:47
Ahoj, mám malý problém, ale jsem z toho už zoufalý. Potřebuji rozdělit obsah textového souboru, což by nebyl takový problém. Ale já potřebuji ty rozdělené části ještě jednou rozdělit na parametry.
Textový soubor obsahuje: lady_queen|20|T|orange|200 x 140;lay|16|S|class|200 x 80; Nejprve to potřebuji rozdělit podle znaku ";". aby se uložily do jednotlivých proměnných a potom to potřebuji rozdělit podle znaku"|". Výsledkem by měla být jednotlivá pole např: $martace[1] = array(lady_queen, 20,T,orange,200 x 140) $martace[2] = array(lady,16,S,class,200 x 80) Vše co jsem na netu našel řeší pouze jednoduché rozdělení pomocí funkce list. Můžete prosím někdo poradit? |
||
Radek9 Profil |
#2 · Zasláno: 20. 2. 2011, 19:00:29
Folker:
Explode podle ;, projít pole, explode podle | a uložit do jiného pole. |
||
Folker Profil |
#3 · Zasláno: 20. 2. 2011, 19:28:02
Díky za radu, ale nejsem si jistý, jak to provést. Můžeš být prosím konkrétnější?
|
||
Folker Profil |
#4 · Zasláno: 20. 2. 2011, 19:32:53
Načtu soubor:
$otevrit_pro_cteni = fopen("soubory/".$zakaznik.".txt","r"); $obsah = fread ($otevrit_pro_cteni,1000000); tady bych to měl rozdělit do jednotlivých částí (polí), ale nevím jak. A potom toto: list ($matrace,$vyska,$tuhost,$potah,$rozmer) = explode ("|",$pole); Je to správná úvaha? |
||
Kcko Profil |
#5 · Zasláno: 20. 2. 2011, 19:33:54 · Upravil/a: Kcko
Folker:
<?php $f = file_get_contents("test.txt"); $f = rtrim($f, ";"); $arr = explode(";", $f); $martace = array(); foreach ($arr as $arrItem) { $martace[] = explode("|", $arrItem); } print_r($martace); ?> Edit: Už ano. |
||
Folker Profil |
#6 · Zasláno: 20. 2. 2011, 19:53:28
Díky, teď se s tím už nějak poperu.
|
||
Folker Profil |
#7 · Zasláno: 20. 2. 2011, 21:05:49
Tak jsem se konečně dopracoval do konečné podoby a výsledek je takový:
$f = file_get_contents("text.txt"); $f = rtrim($f, ";"); $vyrobek = explode(";", $f); while ($matrace = current($vyrobek)) { $klic = key($vyrobek) + 1; list ($typ,$vyska,$tuhost,$potah,$rozmer) = explode("|",$matrace); ?> <p>Matrace <?php echo $klic; ?><br /> Typ matrace: <?php echo $typ; ?><br /> Výška matrace: <?php echo $vyska; ?><br /> Tuhost matrace: <?php echo $tuhost; ?><br /> Potah matrace: <?php echo $potah; ?><br /> Rozměr matrace: <?php echo $rozmer; ?><br /> <?php next($vyrobek); } A výstup vypadá takto: Matrace 1 Typ matrace: lady_carneval Výška matrace: 24 Tuhost matrace: T Potah matrace: orange Rozměr matrace: 200 x 140 Matrace 2 Typ matrace: lady_queen Výška matrace: 20 Tuhost matrace: T Potah matrace: class Rozměr matrace: 200 x 140 Co tomu říkáte? |
||
Kcko Profil |
#8 · Zasláno: 20. 2. 2011, 21:08:11
Celkem nic, jestli to funguje tak v pořádku. Nicméně místo řádku č.5 bych použil novější konstrukci
foreach |
||
Folker Profil |
#9 · Zasláno: 20. 2. 2011, 21:12:41
OK. Snad to také bude někomu hodit.
Díky a čau |
||
Folker Profil |
#10 · Zasláno: 20. 2. 2011, 22:38:50
Přeci jen mám ještě jeden dotaz. Potřebuji ten výsledek odeslat emailem, ale vždycky se mi odešle pouze poslední výpis ciklu while. Je mi jasné proč, ale nevím jak to opravit. Napadá Vás něco?
Nevím jak to udělat, aby se při každém výpisu ciklu while uložil výsledek do proměnné s jiným názvem . Například $obsah1, $obsah2 Poraďte prosím. |
||
panther Profil |
#11 · Zasláno: 20. 2. 2011, 23:07:12 · Upravil/a: panther
Folker:
$mes = 'zprava na mail'; while (...) { $mes .= $obsah1 . $obsah2; } |
||
Časová prodleva: 13 let
|
0