Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
[PHP] estrazione sottostringhe
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet
Precedente :: Successivo  
Autore Messaggio
Crono
Semidio
Semidio


Registrato: 24/03/05 15:12
Messaggi: 224
Residenza: Trieste

MessaggioInviato: 27 Ago 2008 12:57    Oggetto: [PHP] estrazione sottostringhe Rispondi citando

Con una query estraggo da un database una stringa composta nel seguente modo:

(((dati)), ((dati), (dati))) oppure (((dati))) o anche (((dati)), ((dati))) eccetera

in pratica un oggetto definito dalle parentesi () che può contenere un numero variabile di altri oggeti, separati da virgole, anch'essi definiti dalle parentesi () che a loro volta possono contenere un numero variabile di stringhe racchiuse da altre parentesi () e separate da virgole. Le stringhe dati sono composte da una combinazione casuale e di lunghezza variabile di numeri da 0 a 9, punti, trattini e spazi. Io devo estrarre tutte le stringhe e ho pensato di utilizzare la funzione preg_match_all() ma ho grosse difficoltà nel definire l'espressione regolare per la ricerca delle occorrenze nella stringa e mi serve qualcuno con più esperienza che mi dia una mano
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 12:16
Messaggi: 11806
Residenza: Tokelau

MessaggioInviato: 28 Ago 2008 10:53    Oggetto: Rispondi citando

non l'ho mai fatto ma tenterei di estrarre tutte le stringhe 'tagliando via' tutto ciò che non interessa (quindi le parentesi, in primis). Ottenuto quindi un array di stringhe farei un lavoro sulla stringa di partenza cercando una per una le stringhe trovate e valutando alla sua sinistra quante parentesi aperte e quante chiuse si trovano, per capire come ogni stringa sia 'imparentata' con la precedente o la successiva.
E' una analisi molto semplicistica però... se vuoi fare un parser per formule matematiche devi invece lavorare con procedure ricorsive cercando la stringa più interna tra parentesi (abcde), 'tagliarla via' e sostituirla con un'altra stringa e continuare...

Non so quanto sono stato d'aiuto però... ma ci ho provato Smile
Top
Profilo Invia messaggio privato HomePage
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 21:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 28 Ago 2008 22:53    Oggetto: Rispondi citando

Rispostina ma sono toppo cotto per andare oltre Crying or Very sad
Però se hai bisogno solo e soltanto le stringhe data (senza nessuna parentesi) allora secondo me puoi prima di tutto togliere le parentesi dalla stringa di partenza tramite:
Codice:

<?
  // $str è la stringa di partenza
  $str=str_replace('(','',$str);  // sostituisci in $str le ( con nulla
  $str=str_replace(')','',$str);  // sostituisci in $str le ) con nulla
  /*
    ora $str è una stringa con numeri spazi e punti raggruppati e separati da ,
    e puoi esploderla in un array usando la , come separatore
  */
  $array=explode(',',$str);
  // $array è un vettore in cui ogni elemento è una stringa data
?>
Top
Profilo Invia messaggio privato
Crono
Semidio
Semidio


Registrato: 24/03/05 15:12
Messaggi: 224
Residenza: Trieste

MessaggioInviato: 29 Ago 2008 09:48    Oggetto: Rispondi citando

Volevo usare la funzione preg_match_all() per una questione di chiarezza del codice ma ho risolto ugualmente il problema creando funzione che con un paio di cicli for estrae le stringhe dalle parentesi purtroppo quello che ottengo alla fine è un array di stringhe mentre dopo aver scritto il post le mie esigenze sono cambiate e ora ho bisogno di una struttura ad albero che rispecchi la struttura degli oggetti definita con le parentesi.

Esiste un algoritmo che effettui il parsing della stringa e ricostruisca la struttura dell'albero dalle parentesi ?
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 12:16
Messaggi: 11806
Residenza: Tokelau

MessaggioInviato: 29 Ago 2008 13:59    Oggetto: Rispondi citando

Crono ha scritto:
Esiste un algoritmo che effettui il parsing della stringa e ricostruisca la struttura dell'albero dalle parentesi ?


Conosci le 'viste (in ordine anticipato/posticipato) di un albero' ? Se sì, quello che leggi nella stringa è appunto una vista dove il simbolo "(" indica "scendi nel primo figlio", il simbolo "," indica "vai al fratello" e il simbolo ")" indica "fine figli, risali al padre"...
Top
Profilo Invia messaggio privato HomePage
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 21:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 29 Ago 2008 15:22    Oggetto: Rispondi

Il discorso sulle visite è corretto ma c'è un problemino: php non ha un concetto di struttura o di puntatore quindi gli unici due modi per poter definire l' ADT "albero" è usare i vettori o gli oggetti. Io sono propenso alla seconda perchè raffigurare un albero usando i vettori è una cosa che non mi è mai piaciuta.
Se usi gli oggetti dovrai creare una classe che oltre all'informazione contenuta nella stringa dovrà avere 2 proprietà che indichino il figlio sx e quello dx.
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet Tutti i fusi orari sono GMT + 2 ore
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi