Newsgroup: it.comp.www.php
Titolo: [HELP] Chi mi aiuta? Script per lettura di file di testo

Ciao a tutti! Premetto subito che mi sto avvicinando al PHP solo ora, quindi
le mie conoscenze sono alquanto scarse...
Vorrei realizzare una pagina in PHP "generica" a cui passare un file di
testo formattato secondo regole precise (tipo tracciato fisso oppure a
sezioni tipo INI, tanto per fare un esempio), che mi restituisca una pagina
html con grafica varia e il contenuto del file di testo (quindi questa
pagina html sarebbe sempre uguale eccetto i contenuti presi da questo file;
mi serve per fare delle recensioni, per capirci).
Mi potete dire se servono particolari conoscenze? O se esiste già qualcosa
del genere a cui io potrei dare un'occhiata?
Il massimo sarebbe se mi postaste un paio di righe di script, perché non so
neanche come fare a gestire un file di testo in lettura... :(
Ciau e grazie,
Wolf
N.B.: dato che non posso disporre di un database devo basarmi su file di
testo per forza...


Legge un file ini che contiene sezioni con i valor da associare.
Lo script lo trasforma in variabili globali.
A te sta a capire come fa (che non e' banale) ;-)
Jurgen
{test.ini}:
[Section1]
Title=Sono il titolo
Content=Sono il contenuto della pagina.<BR>
[Section2]
Title=Sono il titolo 2
Content=Sono il contenuto della pagina 2.<BR>
{iniToVar.php}:
<?
$iniFile="test.ini";
$section="Section1";
function SetAsGlobal ($item, $key) {
 if (strstr($item,"=")) {
  $pair=explode("=", $item);
  $newVar="GLOBAL \$$pair[0];\n\$$pair[0]=\$pair[1];";
  eval($newVar);
 }
}
$fp =fopen($iniFile,"r");
$data=fread($fp, filesize($iniFile));
fclose($fp);
if (1==preg_match("/\[$section\](.*)\[/siU", $data, $match)) {
 $sectionLines=explode("\n", $match[1]);
 array_walk ($sectionLines, 'SetAsGlobal');
}
else {
 echo "$section not found";
 exit;
}
// esempio output
echo "<h1>" . $Title . "</h1>";
echo $Content . "<BR>";
?>

 Jurgen
(CUT CUT)
GRAZIE MILLE!!!!!!!!!!!
Ora mi guardo per bene il tuo script, ma era proprio quello che cercavo, mi
sei stato di grande aiuto :)
Ciau,
Wolf

mi serve per fare delle recensioni, per capirci).
Ci sarebbero due "sezioni" in questo script:
a) Quella che legge le sezioni .INI
b) Quella che scrive il "template" HTML cosi' ottenuto
Nel caso piu' semplice, diciamo che il file e' del tipo
[Sezione]
Subsezione1.chiave = valore
Subsezione2.chiave1 = valore
Subsezione2.chiave2 = valore
per esempio:
[The Naked God]
Generico.Autore = Peter F. Hamilton
Generico.Edizione = 1999
Generico.Genere = Fantascienza
[The Nano Flower]
Generico.Autore = Peter F. Hamilton
Generico.Edizione = 1996
Generico.Genere = Fantascienza
...
allora puoi immaginare una funzione che, data una sezione, estragga tutti i
dati in un array:
function getSection($filename, $section)
{
	$info = array();
	$status = 0;
	$fp = fopen($filename, "r");
	while(!feof($fp))
	{
		$linea = fgets($fp, 250);
		switch($status)
		{
			case 0:
				if ($linea == "[$section]\n")
					$status++;
				break;
			case 1:
				if ($linea[0]=="[")
					$status++;
				else
				{
					if (eregi("([a-z0-9]*)\.([a-z0-9]*)
*= *(.*) *", $linea, $gregs)
					{
						$subsection = $gregs[1];
						$key	    = $gregs[2];
						$val	    = $gregs[3];
						if
(isset($info[$subsection])
							$vinfo =
$info[$subsection];
						else
							$vinfo = array();
						$vinfo[$key] = $val;
						$info[$subsection] =
$vinfo;
					}
				}
		}
	}
	fclose($fp);
	return $info;
}
...a questo punto, $info["Generico"]["Autore"] vale "Peter F. Hamilton",
ecc., e queste istruzioni
print <<< PAGINA
<HTML>
<HEAD>
<TITLE>$info[Generico][Titolo], di $info[Generico][Autore]</TITLE>
</HEAD>
...
</HTML>
PAGINA;
ti stampano la pagina.
Leonardo
-- 
Nior thainig ar major i dtus an lae chugainn,
is ni rabhamar fein ann i gcoir na gceart
ach mar sheolfai aoireacht bo gan aoire,
ar thaobh na greine de Sliabh na mBan.