Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    5

    Da lista in file di testo a lista html con php

    Ciao,
    ho un problemino, dovrei trasformare una lista che mi viene fornita
    tramite file di testo in una lista
    codice HTML:
    <ul><li>
    in html,
    sto pensando a come fare, credo che servano delle espressioni regolari.
    Come linguaggio conosco abbastanza bene php ma non molto bene le espressioni regolari,
    la lista che mi viene fornita è così composta e formattata:

    1 Paolo, Rossi (ZHT) 2,665 -2 22
    2 Luca, Salvi (ZHT) 1,845 -2 43
    3 Pino, Beretta (LHC) 1,345 0 89
    4 Romano, Lelli (LLH) 975 0 43
    5 Fabio, Sechi (ZHT) 370 0 26

    Quindi c'è un ID spazio vuoto NOME più virgola e spazio vuoto COGNOME spazio vuoto
    PARENTESI TRE LETTERE PARENTESI spazio vuoto NUMERO CON O SENZA VIRGOLA spazio vuoto
    NUMERO POSITIVO O NEGATIVO spazio vuoto NUMERO

    Avrei bisogno di formattare nel seguente modo esempio prima riga:
    codice HTML:
    <ul><li>matricola: 1 <strong>Paolo Rossi</strong> settore: (ZHT) livello: <strong> 2,665 </strong> regola: <strong>-2</strong> contratto: <strong>22<strong> </li></ul>
    Non so se esista un software open source installabile su Windows per fare questo
    tipo di operazioni, altrimenti credo proprio di dover andare via Php..

    Se qualcuno può gentilmente aiutarmi.

    Grazie mille in advance.

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Secondo me si fa anche senza regex
    La tua stringa la puoi dividere la parentesi come delimitatore

    La prima parte è un substr fino alla parentesi (
    La seconda è un substr tra la prima parentesi e la seconda
    La terza parte è dalla parentesi in poi

    Per la prima, fai un altro substr per il primo spazio e ottieni l'ID e nome e cognome a cui toglierai la virgola
    La seconda è già pronta
    La terza è un esplode usando gli spazi come delimitatore

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    Vediamo...
    Puoi provare così:
    Codice PHP:
    $file file("elenco.txt");
    $result "<ul>";
    foreach (
    $file as $line) {
        
    $info = [];
        
    /* $info diventa un array così:
            Array (
                "matricola" => "1",
                "nome" => "Paolo",
                "cognome" => "Rossi",
                "settore" => "ZHT",
                "livello" => "2,665",
                "regola" => "-2",
                "contratto" => "22",
            )
        */
        
    preg_match("/(?<matricola>\d+) (?<nome>[[:alpha:]]+), (?<cognome>[[:alpha:]]+) \((?<settore>[[:upper:]]{3})\) (?<livello>[[:digit:],]+) (?<regola>(?:\+|-)?\d+) (?<contratto>\d+)/"$line$info);
        
    $result .= "<li>matricola: " $info["matricola"] . " <strong>" $info["nome"] . " " $info["cognome"] . "</strong> settore: (" $info["settore"] . ") livello: <strong>" $info["livello"] . "</strong> regola: <strong>" $info["regola"] . "</strong> contratto: <strong>" $info["contratto"] . "</strong></li>";
    }
    $result .= "</ul>";
    echo 
    $result;

    PS​ Sei sicuro che in questo caso sia meglio una lista e non una tabella?
    No

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    5

    Ho fatto alcune prove ma non funge

    Ciao,
    gentilissimi entrambe,
    ho provato la soluzione di Tampertools sia in remoto su Linux che in locale su Windows e:
    in remoto su server Linux mi stampa per ogni riga nel file di testo:

    matricola: settore: () livello: regola: contratto:

    Mentre in locale su Windows mi stampa per ogni riga:

    Notice: Undefined index: matricola in prova.php on line 18

    Notice: Undefined index: nome in prova.php on line 18

    Notice: Undefined index: cognome in prova.php on line 18

    Notice: Undefined index: settore in prova.php on line 18

    Notice: Undefined index: livello in prova.php on line 18

    Notice: Undefined index: regola in prova.php on line 18

    Notice: Undefined index: contratto in prova.php on line 18


    Probabilmente è qualcosa che non funge con preg_match, ho fatto la prova in remoto su Linux
    per verificare che non fosse un problema di OS..

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    testato e funziona... prova a fare un print_r di $info...
    No

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,344
    Non potresti chiedere a chi ti fornisce i dati di modificare il tracciato e di separare i dati con un ; per esempio. Renderebbe la gestione più facile.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    5
    Scusa,
    ho trovato l'inghippo,
    tra settore e livello ho 2 spazi vuoti..

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    5
    Scusa,
    ho trovato l'inghippo,
    tra settore e livello ho 2 spazi vuoti..

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    5

    Tutto ok

    Tutto perfetto,
    per aggiungere uno spazio è bastato aggiungerlo in mezzo tra le due parentesi
    Codice PHP:
    ((?<settore>[[:upper:]]{3})\)   (?<livello>[[:digit:],]+) 
    Inoltre: se il nome fosse Gian Paolo anziché Gianpaolo
    Codice PHP:
    (?<nome>[[:alpha:]]+) 
    darebbe logicamente errore poiché cerca solo caratteri mentre c'è uno spazio, ho ovviato
    all'inconveniente con:
    Codice PHP:
    (?<nome>[^0-9]+) 
    Grazie di tutto!!

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    bravo che hai risolto
    Ultima modifica di tampertools; 30-07-2014 a 18:39
    No

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.