Sostituzione in file txt

Monital

Utente Attivo
15 Apr 2009
778
2
18
Probabilmente molto tempo fa avevo postato qualcos di simile comunque vado al sodo

ho un file txt composto così


[Round1]
D1=
D2=
TA1=6
TB1=8
GA1=-1
GB1=-1
NT1=
BE1=
TI1=
AT1=
TA2=4
TB2=2
GA2=-1
GB2=-1
NT2=
BE2=
TI2=
AT2=
TA3=3
TB3=1
GA3=-1
GB3=-1
NT3=
BE3=
TI3=
AT3=
TA4=5
TB4=7
GA4=-1
GB4=-1
NT4=
BE4=
TI4=
AT4=
[Round2]

...etc(si ripete)
E difficile da spiegare cosa voglio fare ma ci provo

Allora inanzitutto da uno script recupero il Round che mi interessa ad esempio il [Round2] lo script deve scorrere il file e trovare le righe comprese tra [Round2] e fermarsi prima di [Round3] in quel range deve trovare dove TA e TB corrispondano a due numeri ricavati rpecedentemente ad esempio TA=6 e TB=8 trovato ciò deve modificare le due righe successive cioè GA e GB(che ora sono a -1)e subito dopo modificare anche NT e BE

intuitivamente saprei anche come fare suppongo bisogna aprire il file e sostituire la riga per intero il problema e che non so come dargli l'input dic ercare la riga Roundx e iniziare a far contare da lì(funzione count di cui ignoro completamente tutto) e poi con repalce

qualcuno potrebbe mettermi sulla buona strada?

:book:
 

micio86

Utente Attivo
stringhe baledette!

Beh è un giocetto di stringhe... guarda la documentazione su php.net
Ci sono tante funzioni substr, strstr, str_replace..... che servono al tuo scopo.
Gioca molto sugli a capo \n vista la struttura del txt.
Per l'apertura dei file fopen, fclose son le funzioni da vedere

Ad esempio potresti fare una cosa tipo:

Leggo primo carattere, è '[' ? Se si leggo fino a ']' sulla stessa riga.
La stringa è Round X ? Se si passa alla riga successiva.
Leggi la riga intera, la riga inizia con 'TA' ? Se si prendi il valore dopo '=' altrimenti passa alla riga successiva.
Tutto questo finchè non trovo una riga che inizia con '['
 
Ultima modifica:

Monital

Utente Attivo
15 Apr 2009
778
2
18
Leggo primo carattere, è '[' ? Se si leggo fino a ']' sulla stessa riga.
La stringa è Round X ? Se si passa alla riga successiva.
Leggi la riga intera, la riga inizia con 'TA' ? Se si prendi il valore dopo '=' altrimenti passa alla riga successiva.
Tutto questo finchè non trovo una riga che inizia con '['

non mi sembra una cosa molto facile questa le gfunzioni di ricerca e conteggi le ho usate rarissime volte

magari uno spunto?
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
A me quella sembra proprio la struttura di un file INI. Mai sentito parlare della funzione di PHP parse_ini_file? Ad esempio, se vuoi avere tutti i valori contenuti nella sezione Round2:
PHP:
<?php
$data = parse_ini_file('tuofile', true);
print_r($data['Round2']);
?>
Dai un'occhiata alla documentazione sul manuale ufficiale per maggiori informazioni sul suo funzionamento.
 

micio86

Utente Attivo
Allora

$file = fopen("tuofile.txt", "w+"); //apri il file in lettura e scrittura partendo dal primo car a sinistra
$file_new="";

while(!feof($file)) {
$row= fgets($file);//Questo legge riga x riga
if(strstr($row, "[Round1]"); {
while(!strstr($row,"[")) {//gli dico di fermarsi prima del successivo Round
if(strstr($row,"TA="))
$ta=trim(str_replace("TA=","",$row));//becchi il numeretto
elseif(strstr($row,"TB="))
$tb=trim(str_replace("TB=","",$row));//becchi il numeretto
}
}

}
fclose($file);

Inizia così...
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
ah un particolare prima che inizio a metermici su

la riga dove c'è TA=5 per ogni round c'è TA1=5 e a seguire

TA2 TA3 etc.

Ora ame serve solo rpendere TA e che corrisponda al numero che ho io quindi i vari 123 etc. non mi interessano eiste un carattere universale?

ad esempio farglic ercare
TA?=5 indipendentemente dal valore di ?
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
$file = fopen("tuofile.txt", "w+"); //apri il file in lettura e scrittura partendo dal primo car a sinistra
$file_new="";

while(!feof($file)) {
$row= fgets($file);//Questo legge riga x riga
if(strstr($row, "[Round1]"); {
while(!strstr($row,"[")) {//gli dico di fermarsi prima del successivo Round
if(strstr($row,"TA="))
$ta=trim(str_replace("TA=","",$row));//becchi il numeretto
elseif(strstr($row,"TB="))
$tb=trim(str_replace("TB=","",$row));//becchi il numeretto
}
}

}
fclose($file);

Inizia così...
mi dà una serie di errori di sintassi
prima

syntax error, unexpected ';' alla linea 10
ho tolto il ; dopo l'if
ma continua a darmi errori sulle {

ho tolto la {dal primo if ma mi da errore sul while alla riga 12
 
Ultima modifica:

Monital

Utente Attivo
15 Apr 2009
778
2
18
A me quella sembra proprio la struttura di un file INI. Mai sentito parlare della funzione di PHP parse_ini_file? Ad esempio, se vuoi avere tutti i valori contenuti nella sezione Round2:
PHP:
<?php
$data = parse_ini_file('tuofile', true);
print_r($data['Round2']);
?>
Dai un'occhiata alla documentazione sul manuale ufficiale per maggiori informazioni sul suo funzionamento.

mmmh curiosa sta cosa

allor apecisando che ho fatto un errore anche nella richiesta e mi correggo
devo prima selezionare il round e poi verificare che ta e tb corrispondano a due numeri che invio con un altro script e poi modiificare i GA e GB successivi

ale ho provato il parse ini e credo che potrebbe essere molto più facile lavorare così ma come intervengo sulle righe dell'intervallo round1?
 
Discussioni simili
Autore Titolo Forum Risposte Data
T sostituzione testo in un file txt. PHP 4
Y sostituzione di un file immagine da form PHP 18
E Sostituzione Elemento Html PHP 3
I PROBLEMA: Sostituzione sito XAMPP E-Commerce 0
C input in sostituzione della select PHP 2
G Sostituzione NVR IP Cam e Videosorveglianza 1
A Sostituzione telecamera h 264 con una telecamera professionale IP Cam e Videosorveglianza 0
felino Alcatel POP4 Plus: sostituzione batteria Smartphone e tablet 0
C [PHP] sostituzione di alcune lettere nelle stringheo PHP 1
G [PHP] Sostituzione caratteri PHP 2
L sostituzione contenuto diversi div con document.getelementbyid Javascript 1
JackIlPazzo Sostituzione sbagliata in array PHP 1
I sostituzione registrazione PHP 1
X Problema di sostituzione tramite query sql MySQL 5
I Menu senza refresh - sostituzione vecchi frame HTML jQuery 2
P Problema caricamento/sostituzione immagini galleria php-jquery jQuery 2
Frank10 Sostituzione ram = Schermo Nero Hardware 1
T PHP - Sostituzione immagine dopo un certo tempo PHP 4
T javascript controllo campo e sostituzione lettere... Javascript 3
P Sostituzione stringhe sulla base di una tabella di conversione MySQL 2
M funzione di ricerca e sostituzione PHP 0
C upload baol e sostituzione immagini in db access Classic ASP 1
G Sostituzione di document.all Javascript 1
S Php - Sostituzione Stringhe PHP 1
E fpdf salvare e aprire il file PHP 4
I asp | includere un file, indirizzo depositato in un db Classic ASP 0
felino [Windows 10] Scompare icone, file e collegamenti sul desktop Windows e Software 0
S passare un valore da un form a un file .php con metodo post PHP 4
D Miglior modo per estrarre le occorrenze di un elemento in un set di più file xml e quindi scrivere il risultato in una tabella Excel o magari in JSON XML 0
G file CSS contenente variabili HTML e CSS 1
M Creare traccia di download file sul server HTML e CSS 2
I elimina file PHP 1
I cerca file sottocartella unlink file PHP 0
I sessione username scarica file PHP 1
S Aggiornare percorso file collegati MS Access 0
I lista file sottocartella elimina file PHP 3
F comando di inclusione file audio in I-Pad non funziona HTML e CSS 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
I visualizza file sottocartella elimina singolo file PHP 1
I caricamento file in sottocartella nome utente PHP 3
I cartella sottocartella apri o scarica file pdf PHP 1
K Sfondo nuovo file Photoshop 0
C Wp-admin a file php WordPress 5
G Importazione file .sql Web Server 0
csi Inviare file jpg in locale alla stampante con php PHP 0
otto9due Proteggere una cartella e file con password tramite .htaccess e .htpasswd Web Server 0
MarcoGrazia HTML5 <picture> e i file source HTML e CSS 2
MarcoGrazia criptare un file PHP 2
U Link a doppio file PHP PHP 0
U Link a pagina ed esecuzione file PHP 0

Discussioni simili