Codice PHP:
<?
// errore 0: eccesso di testi di vittoria nel rapporto.
// errore 1: eccesso di testi di pareggio nel rapporto.
// errore 2: la divisione in 2 parti non è andata a buon fine
// errore 3: la divisione del combattimento in round è fallita
// errore 4: il combattimento ha un numero troppo elevato di round (forse il nome di un partecipante è 'Attaccante' o è stato inserito un rapporto con attacco federato)
// errore 5a: il parsing di un round normale è fallito
// errore 5b: il parsing di un round speciale è fallito
// errore 6a: il parsing della flotta attaccante è fallito
// errore 6b: il parsing della flotta di difesa è fallito
$TESTOVITTORIA="ha vinto la battaglia";
$TESTOPAREGGIO="Il combattimento finisce in equilibrio - entrambe le flotte rimanenti ritornano ai loro pianeti di origine.";
$TESTOATTACCANTE="Attaccante";
$TESTOPARSAROUND="^(.+)[\(]{1}([0123456789]+:[0123456789]+:[0123456789]+)[\(]{1}.+Tipo(.+)Numero(.+)Armi.+Difensore(.+)[\(]{1}([0123456789]+):([0123456789]+):([0123456789]+)[\(]{1}.+Tipo(.+)Numero(.+)Armi.+La flotta attaccante spara ([0123456789]+) volte con una potenza di ([0123456789]+) sul difensore. Gli scudi del difensore assorbono ([0123456789]+) punti.+La flotta di difesa spara un totale di ([0123456789]+) volte con una potenza di ([0123456789]+) sull\'attaccante. Gli scudi.+assorbono ([0123456789]+) punti .+$";
$TESTOPARSAROUNDATTACCANTEDISTRUTTO="^(.)+[\(]{1}([0123456789]+:[0123456789]+:[0123456789]+)[\(]{1}.+Distrutto.+Difensore(.+)[\(]{1}([0123456789]+):([0123456789]+):([0123456789]+)[\(]{1}.+Tipo(.+)Numero(.+)Armi.+$";
$TESTOPARSAROUNDDIFENSOREDISTRUTTO="^(.)+[\(]{1}([0123456789]+:[0123456789]+:[0123456789]+)[\(]{1}.+Tipo(.+)Numero(.+)Armi.+Difensore(.+)[\(]{1}([0123456789]+):([0123456789]+):([0123456789]+)[\(]{1}.+Distrutto.+$";
$TESTOPARSAROUNDENTRAMBIDISTRUTTI="^(.)+[\(]{1}([0123456789]+:[0123456789]+:[0123456789]+)[\(]{1}.+Distrutto.+Difensore(.+)[\(]{1}([0123456789]+):([0123456789]+):([0123456789]+)[\(]{1}.+Distrutto.+$";
$TESTOPARSARIEPILOGOCONRAZIA="^.*cattur[^0123456789e]+([0123456789e]+)[^0123456789e]+([0123456789e]+)[^0123456789e]+([0123456789e]+).+attaccante ha perso un totale di ([0123456789e]+).+difensore ha perso un totale di ([0123456789e]+).+coordinate spaziali ([0123456789e]+).+etallo e ([0123456789e]+).+ristallo.+luna dai detriti . del ([0123456789e]+)%.*$";
$TESTOPARSARIEPILOGOSENZARAZIA="^.+attaccante ha perso un totale di ([0123456789e]+).+difensore ha perso un totale di ([0123456789e]+).+coordinate spaziali ([0123456789e]+).+etallo e ([0123456789e]+).+ristallo.+luna dai detriti . del ([0123456789e]+)%.*$";
$TESTOPARSALUNA="particelle di metallo e cristallo alla deriva si attraggono a vicenda";
// ometto codice che per capire qui è inutile... la parte interessante è questa:
if ($FETTEARESULT==2) {echo "PARSE ERROR 2";} else {
if (ereg($TESTOATTACCANTE,$COMBATTIMENTO)) {
$FETTE=split($TESTOATTACCANTE,$COMBATTIMENTO);
$NUMEROFETTE=count($FETTE);
if ($NUMEROFETTE>9) {echo "PARSE ERROR 4";} else {
$NUMEROROUND=$NUMEROFETTE-2-$FETTEARESULT;
for ($I=1;$I<$NUMEROROUND+1;$I++) {
echo "<br>TESTOROUNDINCRIMINATO:<br>" . $FETTE[$I] . "<br><br>";
if (ereg($TESTOPARSAROUND,$FETTE[$I],$ROUND[$I])) {
//nomeattaccante - pianetaattaccante - TIPO - NUMERO - nomedifensore - pianetadifensore - TIPO - NUMERO - spari - potenza - assorbe - spari - potenza - assorbe
$NOMEATTACCANTE=$ROUND[$I][1];
$PIANETAATTACCANTE=$ROUND[$I][2];
$TIPOATTACCANTE=$ROUND[$I][3];
$NUMEROATTACCANTE=$ROUND[$I][4];
$NOMEDIFENSORE=$ROUND[$I][5];
$PIANETADIFENSORE=$ROUND[$I][6];
$TIPODIFENSORE=$ROUND[$I][7];
$NUMERODIFENSORE=$ROUND[$I][8];
$SPARIATTACCANTE=$ROUND[$I][9];
$POTENZAATTACCANTE=$ROUND[$I][10];
$ASSORBEDIFENSORE=$ROUND[$I][11];
$SPARIDIFENSORE=$ROUND[$I][12];
$POTENZADIFENSORE=$ROUND[$I][13];
$ASSORBEATTACCANTE=$ROUND[$I][14];
if (ereg("Cargo l.",$TIPOATTACCANTE)) {$MATRIX[1]=1;} else {$MATRIX[1]=0;};
if (ereg("Cargo g.",$TIPOATTACCANTE)) {$MATRIX[2]=1;} else {$MATRIX[2]=0;};
if (ereg("Caccia l.",$TIPOATTACCANTE)) {$MATRIX[3]=1;} else {$MATRIX[3]=0;};
if (ereg("Caccia p.",$TIPOATTACCANTE)) {$MATRIX[4]=1;} else {$MATRIX[4]=0;};
if (ereg("Incro.",$TIPOATTACCANTE)) {$MATRIX[5]=1;} else {$MATRIX[5]=0;};
if (ereg("N. Batt.",$TIPOATTACCANTE)) {$MATRIX[6]=1;} else {$MATRIX[6]=0;};
if (ereg("Col.",$TIPOATTACCANTE)) {$MATRIX[7]=1;} else {$MATRIX[7]=0;};
if (ereg("Ricicl.",$TIPOATTACCANTE)) {$MATRIX[8]=1;} else {$MATRIX[8]=0;};
if (ereg("Sonda spia",$TIPOATTACCANTE)) {$MATRIX[9]=1;} else {$MATRIX[9]=0;};
if (ereg("Bombard.",$TIPOATTACCANTE)) {$MATRIX[10]=1;} else {$MATRIX[10]=0;};
if (ereg("Corazz.",$TIPOATTACCANTE)) {$MATRIX[11]=1;} else {$MATRIX[11]=0;};
if (ereg("Rip",$TIPOATTACCANTE)) {$MATRIX[12]=1;} else {$MATRIX[12]=0;};
for ($J=1;$J<13;$J++) {
if ($MATRIX[$J]==1) {
if (ereg("^[^0123456789]*([0123456789]+(.+)$",$NUMEROATTACCANTE,$AFFETTA)) {
$NAVEATTACCANTE[$I][$J]=$AFFETTA[1];
$NUMEROATTACCANTE=$AFFETTA[2];
} else {echo "PARSE ERROR 6a";};
} else {$NAVEATTACCANTE[$I][$J]=0;};
};
if (ereg("Cargo l.",$TIPODIFENSORE)) {$MATRIX[1]=1;} else {$MATRIX[1]=0;};
if (ereg("Cargo g.",$TIPODIFENSORE)) {$MATRIX[2]=1;} else {$MATRIX[2]=0;};
if (ereg("Caccia l.",$TIPODIFENSORE)) {$MATRIX[3]=1;} else {$MATRIX[3]=0;};
if (ereg("Caccia p.",$TIPODIFENSORE)) {$MATRIX[4]=1;} else {$MATRIX[4]=0;};
if (ereg("Incro.",$TIPODIFENSORE)) {$MATRIX[5]=1;} else {$MATRIX[5]=0;};
if (ereg("N. Batt.",$TIPODIFENSORE)) {$MATRIX[6]=1;} else {$MATRIX[6]=0;};
if (ereg("Col.",$TIPODIFENSORE)) {$MATRIX[7]=1;} else {$MATRIX[7]=0;};
if (ereg("Ricicl.",$TIPODIFENSORE)) {$MATRIX[8]=1;} else {$MATRIX[8]=0;};
if (ereg("Sonda spia",$TIPODIFENSORE)) {$MATRIX[9]=1;} else {$MATRIX[9]=0;};
if (ereg("Bombard.",$TIPODIFENSORE)) {$MATRIX[10]=1;} else {$MATRIX[10]=0;};
if (ereg("Sat. Sol.",$TIPODIFENSORE)) {$MATRIX[11]=1;} else {$MATRIX[11]=0;};
if (ereg("Corazz.",$TIPODIFENSORE)) {$MATRIX[12]=1;} else {$MATRIX[12]=0;};
if (ereg("Rip",$TIPODIFENSORE)) {$MATRIX[13]=1;} else {$MATRIX[13]=0;};
if (ereg("Lanciam.",$TIPODIFENSORE)) {$MATRIX[14]=1;} else {$MATRIX[14]=0;};
if (ereg("Laser l.",$TIPODIFENSORE)) {$MATRIX[15]=1;} else {$MATRIX[15]=0;};
if (ereg("Laser p.",$TIPODIFENSORE)) {$MATRIX[16]=1;} else {$MATRIX[16]=0;};
if (ereg("C. gauss",$TIPODIFENSORE)) {$MATRIX[17]=1;} else {$MATRIX[17]=0;};
if (ereg("C. ionico",$TIPODIFENSORE)) {$MATRIX[18]=1;} else {$MATRIX[18]=0;};
if (ereg("C. plasma",$TIPODIFENSORE)) {$MATRIX[19]=1;} else {$MATRIX[19]=0;};
if (ereg("Cup.",$TIPODIFENSORE)) {$MATRIX[20]=1;} else {$MATRIX[20]=0;};
if (ereg("Cup. p.",$TIPODIFENSORE)) {$MATRIX[21]=1;} else {$MATRIX[21]=0;};
for ($J=1;$J<22;$J++) {
if ($MATRIX[$J]==1) {
if (ereg("^[^0123456789]*([0123456789]+(.+)$",$NUMEROATTACCANTE,$AFFETTA)) {
$NAVEDIFENSORE[$I][$J]=$AFFETTA[1];
$NUMERODIFENSORE=$AFFETTA[2];
} else {echo "PARSE ERROR 6b";};
} else {$NAVEDIFENSORE[$I][$J]=0;};
};
} else {echo "PARSE ERROR 5a";};
};
//dovrebbe aver appena compilato i round senza il distrutto.
e questo è quello che mi da come risultato (per questa parte di codice: