Visualizzazione risultati 1 fino 12 di 12

Discussione: Creare array da tabella HTML con preg_match_all

  1. #1
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito Creare array da tabella HTML con preg_match_all

    Buongiorno,
    ho grabbato e modificato in parte questo codice da un sito web:

    Codice su pastebin (AlterVista non permetteva tutti questi caratteri)

    Ho la necessità di estrarre i dati da ogni singola cella ed averli in un array così da ricostruire completamente la tabella con i miei codici facendola divenire, tra l'altro, responsive.

    So che devo utilizzare preg_match_all ma con tutti i codici trovati in rete non sono riuscito ad ottenere tutti i dati ma solo una riga o massimo 5 ed anche in modo errato.
    Qualcuno sa aiutarmi ad avere un array con i vari dati? Purtroppo le regex sono sempre il mio tallone d'Achille.

    Grazie a chi mi aiuterà
    Apprezzi l'aiuto? Offrimi un caffè!

  2. #2
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Che regexp hai usato fino ad ora?


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  3. #3
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Ma è un lavoro che devi fare una tantum o ti serve uno script che funzioni automaticamente? Per lavori di questo tipo io eviterei le espressioni regolari, piuttosto caricherei l'albero del documento e lavorerei su di esso con i metodi del DOM ad esempio.

  4. #4
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Citazione Originalmente inviato da saitfainder Visualizza messaggio
    Che regexp hai usato fino ad ora?
    • %<td>((?s).*?)</td>%
    • #<tr>\s+?<td>(.*?)</td>\s+?<td>(.*?)</td>\s+?</tr>#

    E altre che non ricordo ma che ho scopiazzato da stackoverflow.

    Citazione Originalmente inviato da karl94 Visualizza messaggio
    Ma è un lavoro che devi fare una tantum o ti serve uno script che funzioni automaticamente? Per lavori di questo tipo io eviterei le espressioni regolari, piuttosto caricherei l'albero del documento e lavorerei su di esso con i metodi del DOM ad esempio.
    Il source di quella pagina cambia circa ogni 10 minuti quindi ho bisogno che lo script sia automatizzato. Ho provato ad usare simple_xml_dom ma recupera solo una riga.
    Apprezzi l'aiuto? Offrimi un caffè!

  5. #5
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Dovrebbe essere una cosa del genere:

    Codice:
    /<td .+?>(.*?)</td>/s
    Mi raccomando la "s" finale perché il match non deve considerare i ritorno a capo.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  6. #6
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Sembrerebbe funzionare un po' meglio delle vecchie regex ma è comunque un casino riuscire a ricostruire quella tabella.
    Conosci mica qualche altro metodo veloce?
    Apprezzi l'aiuto? Offrimi un caffè!

  7. #7
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,274

    Predefinito

    Ma se fai l'explode di '<b>' e prendi tutto fino a '</td>' per ogni elemento ?

    Ciao!

  8. #8
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Credo che non funzionerebbe. Guarda bene. Sono 3 tabelle. A me interessa l'ultima.
    Apprezzi l'aiuto? Offrimi un caffè!

  9. #9
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,274

    Predefinito

    Beh ma poi hai un array di stringhe di tutti gli elementi... Non so se il numero di elementi può variare (dipende ovviamente dal sorgente), ma potresti prendere le stringhe che ti interessano, del tipo
    Codice PHP:
    $s = explode('<b>', $contenuto);
    $parte1 = substr($s[0], 3, (strpos($s[0], '</b>')=== false)?strpos($s[0], '</td>'):strpos($s[0], '</b>'));
    $parteN = substr($s[0], 3, (strpos($s[N], '</b>')=== false)?strpos($s[N], '</td>'):strpos($s[N], '</b>'));
    (ho fatto che cerca sia </b>, sia </td> perché ho visto che a volte </b> non c'é), ma non ho analizzato bene la pagina se ci son altri casi...

    Non so però in termini di prestazioni se è meglio: so che le espressioni regolari non sono un gran ché, ma tra questo modo e l'altro non so quale sia il migliore...

    p.s: non ho capito perché non puoi usare i metodi del DOM, che sono fatti apposta.

    Ciao!
    Ultima modifica di alemoppo : 04-02-2014 alle ore 22.29.22

  10. #10
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Citazione Originalmente inviato da miki92 Visualizza messaggio
    Sembrerebbe funzionare un po' meglio delle vecchie regex ma è comunque un casino riuscire a ricostruire quella tabella.
    Beh, quella prende il contenuto di tutte le celle, che sarebbe il primo passaggio e quello che mi sembrava ti servisse. Poi cos'è che ti crea difficoltà?


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  11. #11
    Guest

    Predefinito

    Citazione Originalmente inviato da miki92 Visualizza messaggio
    Credo che non funzionerebbe. Guarda bene. Sono 3 tabelle. A me interessa l'ultima.
    Io ti consiglierei di utilizzare questa classe, mi ci sono sempre trovato bene nel grab di pagine web( in accoppiata con cUrl) .
    Leggiti la documentazione e vedi gli esempi inclusi.

    http://sourceforge.net/projects/simplehtmldom/

  12. #12
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    MonasteriConventi è proprio quella la classe che ho usato ma la tabella da un po' di difficoltà.
    Apprezzi l'aiuto? Offrimi un caffè!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •