- Home
- Categorie
- Coding e Sistemistica
- PHP
- Funzione - esiste?
-
Funzione - esiste?
Ciao ragazzi ho una domanda:
volevo sapere se esiste una funzione in grado di scrivere su un file già esistente, ma da un determinato punto che mi interessa... In c sò che c'è qualcosa del genere con fseek ma non sò qui...Thank
-
Ok ragazzi ho trovato la soluzione, nelle mie ricerche purtroppo non ho trovato nulla poi ripensando alla funzione suddetta del C/C# ho trovato la soluzione che vi posto:
[PHP]
<?php$fp = fopen('somefile.txt');
// Lettura di qualche dato
$data = fgets($fp, 4096);
// si torna ad inizio file
// come rewind($fp);
fseek($fp, 0);
?>
[/PHP]
Allora premetto che ora mi ci metto e lo proverò per ora lo dò per buono eheh
-
Allora ragazzi ho provato e funziona ora allora cambio la mia domanda:
Diciamo che ho un file in php che chiamo pagina.php che è fatta per esempio così:
[PHP]
<?PHP
$x="ciao";
?>[/PHP]
E fino a qui ci siamo, ora mettiamo il caso che io voglia inserire una cosa tra <?PHP e $x?
con fseek($fp,6) mi scrive da dopo <?PHP ma il problema è come devo aprire il file? con a+ mi accoda ma non mi si fila
l'fseek() perchè accoda dalla fine, mentre con r+ mi cancella tutto quello dopo quello che inserisco...
aiuto
-
-
<SPAN class=type>[PHP]
resource fopen ( string $filename , string $mode [, bool $use_include_path [, resource $zcontext ]] )
[/PHP]
$zcontext è la chiave? non capisco, perchè se prenderebbe un'intero forse indicava la posizione...e comunque non accoderei i file ma li cancellerei ehehe
-
Ok vi spiego un pò quello che ho capito lavorandoci su:
Sappiamo che con a o a+ accodiamo al file quindi non va bene, r o r+ (o w o w+) non va bene nella mia posizione perchè anche contando i caratteri dopo di cui ci serve inserire del testo, quest'ultimo cancella tutto quello che viene dopo e quindi anche questo non va bene. Un modo per farlo ci sarebbe ma dovremmo passare il pezzo che in teoria viene distrutto in una stringa, dopodiche scrivere ciò che vogliamo e riaccodare questa stringa.
Un pò un casino ma penso funzioni. Per quello che mi serviva a me alla fine faccio così:
Praticamente tolgo ?> finale ed inserisco tutto il codice che mi serve poi insieme al codice inserisco anche (sempre sottoforma di stringa) ?> per la chiusura del file .php un macello ^^
-
invece di a+, r+ ecc, prova a mettere x+...l'ho letto dal manuale, ma non l'ho mai provato...funzione con php 5
-
Grazie per il consiglio, senti sempre da manuale sai se quindi scrive da dove ho il puntatore? perchè se è così sarebbe molto utile anche se diciamo ho aggirato questo mio problema...Grazie ancora per la risposta
-
praticamente ti mette il puntatore all'inizio del file...oppure puoi utilizzare un altra soluzione...l'ho adoperata tempo fa...
ovvero, tu metti tutti i dati del file in una variabile, poi ci scrivi dentro al file e ti aggiungi i file della variabile...un esempio:[php]
<?php
$file="file.txt";
$fx = fopen($file, 'r');
$tmp = fread($fx, filesize($file));//legge tutto il file
$var=$_GET['var'];//un esempio di variabile che ricevi da un form get
fwrite($fp,"$var/n$tmp ")or die("Errore nella scrittura del file");
fclose($fx);
?>
[/php]Per il resto, consulta il manuale oppure vai qui:
http://www.allwebfree.it/php_txt.php
-
Si ho fatto così per il modulo che cancella una certa cosa all'interno di un file (vedi: http://www.giorgiotave.it/forum/php-mysql/74844-script-newsletter-senza-mysql.html) poi per quanto riguarda aggiungere siccome non mi interessa dove aggiungere apro il file in w+ sovrascrivendo il tag di chiusura ?> , poi inserisco quello che voglio incluso infine il nuovo tag di chiusura ?> eehe Grazie per le risposte
-
Prova cosi:
[PHP]<?php
$file="file.txt";
$fx = fopen($file, 'r+');
$tmp = fread($fx, filesize($file));//legge tutto il file
$riga= fgets ($fx, 8192);//mi posiziono al secondo rigo$var=$_GET['var'];//un esempio di variabile che ricevi da un form get
$tutto="$riga<br>$var<br>$tmp<br>";
fwrite($fp,"$tutto")or die("Errore nella scrittura del file");
fclose($fx);
?> [/PHP]
E' un esempio un po grossolano...non l'ho testato
-
Ci provo e ti faccio sapere ora vado che domani a lavoro eheh ti ringrazio