Autor Zpráva
Šéva
Profil
Zdravím,
mám soubor changelog.txt, ve kterém je zhruba takovýto obsah:
10.9.2012;Test2;Test2 komentováni novinek.#
10.9.2012;Test;Test komentováni novinek.#

a takovýmto kódem to čtu

$soubor=fopen("changelog.txt","r");
$text=fread($soubor,filesize("changelog.txt"));
$text=explode("#",$text);

for($a=0;$a<count($text)-1;$a++)
{
  if(substr($text[$a],0,2)!="//")
  {
  $zmeny=explode(";",$text[$a]);
  echo "<fieldset><legend><b>$zmeny[1]</b>&nbsp;&nbsp;<span style='font-size:14px'><i>$zmeny[0]</i></span></legend><br>$zmeny[2]<br></fieldset><br><br>";
  }
  $zmeny=array();
}
fclose($soubor);

problém je, že když // dám před druhý a nižší řádek, tak to ten řádek stejně vypíše, bere to v potaz pouze první řádek a ostatní řádky se vypíší i přesto, že nesplňují tu podmínku. V čem by mohl být problém? Do DB to dávat nechci.

Díky
Jan Tvrdík
Profil
Šéva:
Protože řádky rozděluješ pomocí znaku # namísto konce řádků, tak ti tam ten konec řádku zůstává. Nejjednodušší bude každý řádek ošetřit funkci trim.

$obsah = file_get_contents('changelog.txt');
$radky = explode("#", $obsah);
foreach ($radky as $radek) {
    $radek = trim($radek);
    if (substr($radek, 0, 2) !== '//') {
      $zmeny = explode(';', $radek);
      echo "<fieldset><legend><b>$zmeny[1]</b>&nbsp;&nbsp;<span style='font-size:14px'><i>$zmeny[0]</i></span></legend><br>$zmeny[2]<br></fieldset><br><br>";
    }
}
Šéva
Profil
Jan Tvrdík:
tj ono, díky. Myslel jsem si, že i když vymažu všechny prázdné znaky, tak že to bude chodit...omyl. jinak rozdělování řádků mám tímto způsobem udělané z toho důvodu, aby když je delší text, tak aby se mohl psát do více řádků.

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: