| Autor | Zpráva | ||
|---|---|---|---|
| Jirkasss Profil * |
#1 · Zasláno: 17. 4. 2011, 12:03:31
Ahoj, nemuzu najit nejake sikovne php funkce pro textove soubory, napr. neco jako nacteni radku, skok na redek silo x a pod.Chci si nacitat log z firewallu ktery je normalne dost necitelny a zobrazit si ho v tabulce.
|
||
| mark92 Profil |
#2 · Zasláno: 17. 4. 2011, 15:17:00
PHP vie súbor načítať príkazom:
$obsah = file_get_contents(url); riadky získaš: $riadky = explode("\n",$obsah);časti riadkov (prípadne znaky) pomocou funkcie: substr(retazec, pozicia_v_retazci, pocet_znakov); alebo na vyhľadávanie reťazcov v obsahu môžeš použiť funkciu: function indexOf($needle, $index, $haystack)
{
$dlzka = strlen($needle);
$limit = strlen($haystack)-$dlzka+1;
for ($i=$index;$i<$limit;$i++)
if (substr($haystack,$i,$dlzka) == $needle)
return $i;
return -1;
} |
||
| Jirkasss Profil * |
#3 · Zasláno: 17. 4. 2011, 17:11:35
Explode prave radky nedava, je to funkce specielne pro retezce, stim bych prave pracoval az bych nacetl ten radek :(
|
||
| Keeehi Profil |
#4 · Zasláno: 17. 4. 2011, 17:16:49 · Upravil/a: Keeehi
Jirkasss:
„Explode prave radky nedava“ Tak jak to napsal mark92 tak ano, vrátí to obsah souboru rozsekaný do pole podle řádků. Ten log z firewallu bude mít nejspíše nějakou pevně danou strukturu, takže pro prohledávání bych využil asi regulární výrazy. |
||
| Alphard Profil |
#5 · Zasláno: 17. 4. 2011, 17:27:03
|
||
| Jirkasss Profil * |
#6 · Zasláno: 17. 4. 2011, 19:44:01
Aha.
k regularnim vyrazum sem zatim nedosel.Zacinam s PHP. Premejslel sem taky o tom ze bych soubor nacetl a ulozil do tabulky databaze a pak bych mohl vznaset dotazy a lepe tak filtrovat... co myslite? |
||
| Mastodont Profil |
#7 · Zasláno: 17. 4. 2011, 19:49:54
Pokud chceš obsah souboru rozsekaný do řádků, tak na to je funkce file().
|
||
| Joker Profil |
#8 · Zasláno: 17. 4. 2011, 19:51:12
Alphard:
„Existuje hotová kombinace file()“ A taky funkce pro načtení jednoho řádku fgets(). Jirkasss: „Premejslel sem taky o tom ze bych soubor nacetl a ulozil do tabulky databaze a pak bych mohl vznaset dotazy a lepe tak filtrovat“ Je otázka, jestli přidaná hodnota databáze převýší přidanou složitost z toho přenášení. |
||
| Jirkasss Profil * |
#9 · Zasláno: 18. 4. 2011, 00:13:01
tak sem to sesmolil :) ale jeste hodne co dodelavat... neco na otvirani souboru, nejak ty filtry... casem.
<?PHP
if ( File_Exists ("log.log") && is_readable("log.log") ):
$pole_radku = explode("\n",file_get_contents("log.log"));
for ($i = 5; $i < count($pole_radku)-1; $i++):
{
$pole_bunek = explode(" ",$pole_radku[$i]);
for ($j = 0; $j < 17; $j++):
{
$pole_tabulka[$i][$j] = $pole_bunek[$j];
}
endfor;
}
endfor;
$pole_hlavicka = explode(" ",$pole_radku[3]);
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<title>PHP - FireLog</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<table border="1" >
<tr>
<?PHP
for ($j = 1; $j < 18; $j++):
{
echo("<td>". $pole_hlavicka[$j] ."</td>");
}
endfor;
?>
</tr>
<?PHP
for ($i = 5; $i < count($pole_radku)-1; $i++):
{
echo("<tr>");
for ($j = 0; $j < 17; $j++):
{
echo("<td>".$pole_tabulka[$i][$j]."</td>");
}
endfor;
echo("</tr>");
}
endfor;
?>
</table>
</body>
</html>
<?PHP
else:
echo ("soubor neexistuje");
endif;
?>
|
||
| Jirkasss Profil * |
Oprava: hezke vylepseni s pomoci kolegu :)
jeste mi bylo doporuceno pouzit for each, ale ja tam neprojizdim cela pole, a nevim jak to s foreach udelat... <?PHP
if ( File_Exists ("log.log") )
{
if (is_readable("log.log"))
{
$pole_radku = explode("\n",file_get_contents("log.log"));
for ($i = 5; $i < count($pole_radku)-1; $i++)
{
$pole_bunek = explode(" ",$pole_radku[$i]);
for ($j = 0; $j < 17; $j++)
{
$pole_tabulka[$i][$j] = $pole_bunek[$j];
}
}
$pole_hlavicka = explode(" ",$pole_radku[3]);
}
else $chyby = "soubor je necitelny";
}
else $chyby = "soubor neexistuje";
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<title>PHP - FireLog</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<table border="1" >
<?PHP
if (isset($chyby))
{
echo($chyby);
}
else
{
echo("</tr>");
for ($j = 1; $j < 18; $j++)
{
echo("<td>". $pole_hlavicka[$j] ."</td>");
}
echo("</tr>");
for ($i = 5; $i < count($pole_radku)-1; $i++)
{
echo("<tr>");
for ($j = 0; $j < 17; $j++)
{
echo("<td>".$pole_tabulka[$i][$j]."</td>");
}
echo("</tr>");
}
}
?>
</table>
</body>
</html> |
||
|
Časová prodleva: 15 let
|
|||
0