[Php-it] Elaborare un XML da php4: lentezza e troppe risorse usate
Domenico L.
domenico.lorusso at pleiade.it
Mon Mar 12 08:41:47 CET 2007
RedFoxy ha scritto:
>>
>> preg_metch_all('#\<rec\s.*/\>#sUD',$testo,$m);
>>
>> $record=$m[0];
>> $n=count($record);
>> $out=array();
>> for ($i=0;$i<$n;$i++){
>> preg_match_all('#(\w+)="(.*)"#sUD',$record[$i],$m);
>> #->io uso $i ma potresti usare una altro campo se hai una chiave
>> primaria per esempio
>> #->Ci va anche poco ad inserire qui un controllo per vedere che ci
>> siano tutte le chiavi obbligatorie
>> #->Quello sulla correttezza dei valori magari lo farei dopo cmq
>> $out[$i]=array_combine($m[1],$m[2] );
>> }
>> unset($m,$record);
>>
>>
>> Ora fai i controlli su $out, al limite puoi metterli su di un file o
>> qualcosa di simile
> sia $testo la parte di testo contenente i record
>
> Lasciando perdere che array_combine e' di php5 e non php4, alla fine
> chi mi dice dove finisce un rec ed inizia un altro? usare la conta x4
> (i 4 valori del rec) non e' detto che sia valido in quanto non ci
> vuole niente che in un rec mi mettano 3 o 5 valori facendo sballare
> tutto... o sbaglio a pensarla cosi'?
>
Sbagli :-)
Questo ciclo che non ho testato appieno, ti permette di ottenere prima
tutti i record, successivamente tutti gli attributi, il controllo sugli
attributi, devi cmq farlo, e non basta vedere se sono 3 o 5 (cosa che si
fa banalmente con count($m[1]) ) ma leggendo i valori di $m1 e
controllando che siano quelli che ti aspetti:
my_arrayCombine($key, $val){
static $myAttribute=array ( elenco val),$n=count($myAttribute);
$m=count($key);
# Se gli attributi sono tutti obbligatori se m < n puoi già tornare
errore
$ret=array();
for ($i=0;$i<$n;$i++){
$k=$myAttribute[$k];
$t=array_search($k,$key);
if ($t===false or $t===null){ #->null solo per php < 4.2
#->torna errore perché manca una chiave importante
}else{
$ret[$k]=$val[$t];
}
}
}
Altri eventuali controlli li aggiungi tu.
Però dubito di poterti spiegare meglio se non provi il codice che ti sto
dicendo
Per il discorso delle if, ad una persona che legge il codice per la
prima volta credo sia più leggibile un codice di questo tipo:
function
if (non va qualcosa ) return
tante rige di codice
end funciton
piuttosto che
function
if (va tutto bene)
tante rige di codice
else
return errore
end if
end function
Ciao
--
Domenico L. icq: 645 44 861
per stupire mezz'ora basta un libro di storia,
io cercai di imparare la Treccani a memoria... [F.d.A.]
More information about the Php-it
mailing list