Ricerca stringa con carattere jolly

Monital

Utente Attivo
15 Apr 2009
778
2
18
Buongiorno eccomi qua sperandoc he sia l'ultimo quesito(ma non credo :hammer:) di questo script

In sostanza ho un file txt con dei dati predisposti rpessapoco così

TA1=3
TB1=5
SS1=NO
RR1=f
GG1=4

e poi si ripete
TA2=4
TB2=6
SS2=NO
RR2=f
GG2=4

e si ripete ancora ............

Ora tramite unos cript precedente ricavo due numeri e da questo devo trovare una stringa corrsipondente a TA e verificare che in TB ci sia il secondo numero e modificare SS in relazione. Senza tener conto se si tratta di TA1 o TA2.

Ho fatto una prova con preg_match


PHP:
$var=3; 
$var2=5;
$mah="TA1=".$var; 
$ce=preg_match("/(TA)?(=$var)/i",$mah);

e mi restituisce1 quindi penso di essermia vvicinato perlomeno alla soluzione del carattere jolly. ma non riescoa far entrare sta cosa nel ciclo di lettura del file

In sostanza lo script deve fare questo

aprire il file cercare la stringa dove TA(carattere jolly,che sia 1 2 o 3 non importa)=($var) una volta trovata deve leggere la riga successiva e verificare che TB(carattere jolly)=$var2 e modificarmi ss(indipendentemente se presenta 1 2 o3) da NO a SI

Help to me
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
Con molta fatica ce la sto facendo mo so icneppato a come verificare al riga successiva

PHP:
foreach($data as $i => $riga){
   for($p=1; $p <= $pos; $p++){
$k=$i+1;
$ce=preg_match("/TA".$p."=".$var."/i",$riga);
if($ce=='1'){

echo $k."-".$ce."<br />";
}
}

  

    }

così mi isola i vari TA?=variabile e mi identifica la riga, (che credo eprò dovrei associare) ora mi basterebbe
vedere se la riga successiva

PHP:
 $ce2=preg_match("/TB".$p."=".$var."/i",$riga);
è uguale a 1
ed ho quasi terminato
HELP
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
scusa ma non ho capito bene cosa devi fare, correggimi se sbaglio:
$data è un array che contiene le varie righe, es.
$data[0] = "TA1=3"
$data[1] = "TB1=5"
$data[2] = "SS1=NO"
$data[3] = "RR1=f"
$data[4] = "GG1=4"
$data[5] = "TA2=4"
$data[6] = "TB2=6"
$data[7] = "SS2=NO"
$data[8] = "RR2=f"
$data[9] = "GG2=4"
ecc...ecc...
e se data[0] e data[1] rispettano entrambe il preg vuoi aggiornare data[2] = "SS1=SI"
se è così non puoi usare i forech ma un ciclo for un po' particolare, provo a farti un esempio (scrivo quasi in pseudocodice)
PHP:
<?php
$num_elementi=count($data); //conti quanti sono gli elementi dell'array
//ciclo for
for($k=0; $k < $num_elementi; $k=$k+5){//leggi sempre il primo elemento di ciascun gruppo: $k==0, ==5, ==10 ecc...
	//fai il preg dell'elemeto $data[$k] TAx=55
	if($ce_0=='1'){
		echo //....
	}
	//il preg dell'elemento $data[$k+1] TBx=77
	if($ce_1=='1'){
		echo //....
	}
	if($ce_0=='1' && $ce_1=='1'){
		//aggiorni l'elemento SSx=SI
	}
}
?>
se ho capito male sorry

p.s.
se fai partire gli array dall'indice 1 il for diventa $k=1; $k <= $num_elementi
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
no borgo

più che altro sono io che mi sto spiegando male, perchè ogni volta che riesco fare qualcosa domando solo epr il paso che mi blocca

però ogni tuo suggeriemnto mi sta facendo avvicinare.

in realtà le stringhe sono un pò più complesse non so come spiegarti,

ci provo speigandoti cos'è questo file:

Il file in questione serve per la compilazione di classifiche e calendari di un campionato di calcio

Nel file sono presenti dei blocchi

ci sono tanti blocchi quanti Round espressi da una variabile nelle prime righe del file
es Round =8
mi da 8 blocchi di round

quei ta1 TA2 TA3 TA4 non sono altro che gli incontri della giornata quindi se ci sono 8 squadre ci saranno 4 incontri per giornata se ci sono 10 suqadre nel round ci saranno 5 TA e 5 TB e così via.

IO non voglio far altro che trovare cheun valore espresso tra TAx e quello di TBx siano uguali(nellos tesso round) ai valori che gli invio io, indipendentemente dall'incontro e dal round.

una volta trovata la corrispondenza faccio partire lo script.

Però pensavo di esserci riuscito ed invece no mi serve ricavarne anche il round.

In sostanza devo isolare i vari round verificare la corrispondeza tra ta e tb del round e modificare le due righe successive GA e GB, ma devo anche conservare il numero del round.

ci sarei quasi riuscito con

PHP:
$data = file($file);
$soc=8; 
$var=6;
$var1=8;
$pos=($soc/2);
$totgiorn=(($soc-1)*2);
     for($totg=1; $totg <= $totgiorn; $totg++){
$round="[Round".$totg."]";

$righe_round=(($pos*8)+2);

$d=array();
foreach($data as $i => $riga){
    if (strstr($riga,$round)){

        for($k=3; $k <= $righe_round; $k++){//se vuoi partire da 1 sino, in questo caso, a 50
            $indice=$i+$k;
            $d[$indice]= $data[$indice]; //questo per mantenere la corrispondenza es. $d[33]=$data[33]
		echo $d[$indice]."<br>";
in pratica apro il file creo l'array e faccio leggere partendo da [Round x] saltanto le prime due righe del dopo Round.
$d[indice] mi restituisce tutte le righe presenti nei vari round ma non riesco a fare le verifiche su queste righe (mi frega sempre il carattere jolly per il numero dopo TA, che non ho modo di conoscerlo e che comunque non mi serve)e modificarle e nemmeno a conservare il round

ci sto provando or ora
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
stavo per risponderti quando ho visto che ci sei quasi arrivato, eventualmente aspetto a piè fermo l'altro problema:byebye:
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
ciao
stavo per risponderti quando ho visto che ci sei quasi arrivato, eventualmente aspetto a piè fermo l'altro problema:byebye:

bè ci sono risucito anche a modificare la riga, pian pianellos to diventando un genio ;)

mi ha dato lo spunto quel

PHP:
 if($ce_0=='1' && $ce_1=='1'){
        //aggiorni l'elemento SSx=SI
    }

comunqeu era sbagliato il preg

PHP:
		for($p=1; $p <= $pos; $p++){
$ce_1=preg_match("/TA".$p."=".$ta."/i",$round_tot);
if($cea==1){//fissando $ce_0==1 ho riciclato per trovare $ce_1
......altro codice
		for($pb=1; $pb <= $posb; $pb++){	
		echo $ta;
$ce_1=preg_match("/TB".$pb."=".$tb."/i",$Round);

ho ciclato i round poi sempre nel foreach dei round ho ciclato per arrivare a $ce_0 e ho salvato in una variabile i vari round, perchè poteva capitare(ed infatti è capitato) che TA1 era in più round, con fforeach ho ricomnciato il giro ed ho trovato $ce_0 esalvato il round($totg) $p il poi ho riletto il file partendo dal Round($totg) e sempre con i vari cicli aperti ho ricercato $ce_1 e salvato $pb.

poi ho fatto un semplice if

PHP:
if($ce_1==1 && $p==$pb){

et voilà mi son fatto restituire sia la riga che il numero di riga epoi ho semplicemente operato una sopstituzione con il round $totg sono riaprtito dalla 3 riga e sono andato a sostituire GA


insomma persorso lunghisimo ma dopo bene due anni sono risucito a modificare quel file.

l'avevo sempre accantonato ogni volta perchè credevo fosse troppo difficile ma alla fine ce l'ho fatta.

Molto probabilemnte c'er aun metodo più veloce ma mi ritengo soddisfatto ugualemnte dato che non ho studiato programmazione ma è solo una passione nata da un paio di anni.

L'altro quesito riguarda la sovrascrittura della riga ma ci sono arrivato da solo.

Grazie los tesso

come sempre siete sempre i più cordiali ed i più utili.

Complimenti epr il lavoro che svolgete. :fonzie:

a breve ne ho qualche altra ;)
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
:fonzie:
una piccola domanda, stai lavorando con un file txt?
se si perche non usi mysql penso che sarebbe oltremodo più semplice (ma forse sbaglio)
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
ciao
:fonzie:
una piccola domanda, stai lavorando con un file txt?
se si perche non usi mysql penso che sarebbe oltremodo più semplice (ma forse sbaglio)

nono non sia mai

Quel file txt viene d aun altro script molto ma molto complesso che uso, e volevo modificarlo in base alle mie esigenze.

Come database mysql tutta la vita.

Credoc he lavorare con i file txt è pura follia
 
Discussioni simili
Autore Titolo Forum Risposte Data
B Stringa sql per ricerca su più campi Database 1
K ricerca parola in stringa Javascript 4
E Ricerca su una stringa numerico PHP 8
Monital Ricerca stringa e sovrascrittura file txt PHP 2
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
G Menù a tendina di ricerca con query PHP 1
R Problema query con ricerca id numerico PHP 2
L Mysql: Nascondere le pagine dopo una ricerca PHP 1
F Visualizzazione motore di ricerca SEO e Posizionamento 2
F Funzione Glob - ricerca file contenente una parola PHP 1
P Ricerca campo data PHP 1
L titolo del sito nella pagina di ricerca di google SEO e Posizionamento 2
A Creare un modulo di ricerca avanzata con dreamweaver HTML e CSS 0
L Ricerca valore mysql e incremento PHP 73
E Problema motore di ricerca FULL_TEXT PHP 0
motleyrulez Ricerca filtro con Ajax PHP 1
Shyson [CSS] Posizionare casella di ricerca HTML e CSS 3
P Query di ricerca profonda MySQL 0
T Query per ricerca ritardo evento MS Access 7
B Campo ricerca domini HTML e CSS 4
V Ricerca volontari questionario tesi - Ricambio Offerte e Richieste di Lavoro e/o Collaborazione 0
L Ricerca sviluppatori PHP tempo indeterminato Milano Offerte e Richieste di Lavoro e/o Collaborazione 0
S [PHP] Creare collegamento filtri di ricerca al database PHP 6
L [PHP] Ricerca su search bar esterna PHP 1
D Ente di Formazione accreditato in Regione Lazio ricerca Front End Developer Offerte e Richieste di Lavoro e/o Collaborazione 3
N [WordPress] Ricerca tema WordPress 6
Alex_70 [PHP] Ricerca con risultati cliccabili PHP 21
Federico.Marcelo Alla ricerca di scrittori post guest Offerte e Richieste di Lavoro e/o Collaborazione 0
ANDREA20 [PHP] motore di ricerca nel sito PHP 11
O [PHP] Ricerca record tramite post PHP 7
GraceHawk [MS Access] Findfirst per ricerca record MS Access 1
T [PHP] Ricerca nel database PHP 2
A [Javascript] Mostrare un marker se è vicino al risultato di ricerca con google maps Javascript 3
V Semplice barra di ricerca con filtro categorie prodotti E-Commerce 0
A Ricerca con collegamento in altro sito web Discussioni Varie 0
C [PHP] Ricerca multipla, evitare if PHP 4
F [WordPress] Plugin Ricerca per e-commerce Woocommerce WordPress 1
M [OFFRO][RETRIBUITO] Milano IT Consulting SRL - Ricerca 1 Consulente PHP Offerte e Richieste di Lavoro e/o Collaborazione 0
D [ASP] Motore di ricerca interno su 2 tabelle Classic ASP 3
A [MySQL] Ricerca in PMA MySQL 0
andreas88 Da .htm a .php, perdo le mie posizioni su Google ricerca? SEO e Posizionamento 9
P Google risultati di ricerca inappropriati SEO e Posizionamento 1
Emix [PHP] Ricerca e modifica su due tabelle PHP 26
G [PHP] FORM DI RICERCA ESTESA PHP 2
borgo italia [PHP] ricerca caratteri accentati PHP 4
P [PHP] ricerca dati PHP 1
Emix [PHP][MYSQL] Ricerca avanzata tramite form PHP 6
R [MySQL] ricerca per data... MySQL 10
T4MAR4 [PHP] Problema ricerca con apostrofo PHP 2

Discussioni simili