Autor Zpráva
hal_sk
Profil
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
a tam by bolo logicky=fero@xxx.xx

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
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
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;
?>
Funguje to proto, protože obsahem prvního parametru výše zmíněné funkce je "Case sensitive regular expression. "
hal_sk
Profil
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
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
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
A ešte malý dotaz.
Ako zabezpečím, aby sa index pola
$val
vo foreach začínal od 1?
AM
Profil *
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
ve skutečnosti
foreach($pole as $val)
znamená toto: vezmi první položku v poli a ulož jí do proměnné $val, pak se vykoná sada příkazů mezi závorkami. Dále vezmi druhou položku v poli a udělej s ní, to co s předchozí a tak dále, až se probereš na konec pole.

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: