Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Prendere stringa in mezzo a 2 caratteri

    Sto lavorando a un software che mi serve per estrapolare funzioni C da un file e inserirle in un database tramite Mysql, ora sono arrivato al punto in cui devo estrapolare solo le righe che contengono le funzioni richiamate:

    void InitGestPedali(void) //funzione richiamata
    {
    UBYTE ubI;
    /* Imposta gli identificativi delle Wdd */
    for ( ubI = 0; ubI < MAX_NUM_WDD; ubI++ )
    {
    wstWdd[ubI].ubWddId.uwIdCanale = (UWORD) ubI;
    }

    /* Azzera lo stato di tutte le Wdd */
    ResetPedali();
    }
    void InitGestPedali(void) //funzione richiamata
    {
    //operazioni della funzione
    UBYTE ubI;
    for ( ubI = 0; ubI < MAX_NUM_WDD; ubI++ )
    {
    wstWdd[ubI].ubWddId.uwIdCanale = (UWORD) ubI;
    }
    ResetPedali();
    }

    Devo prendere solo le righe delle funzioni richiamate sapendo che prima e dopo i caratteri sono o "}" "{" oppure ";" "{"... Esiste una funzione che mi prende solo la stringa in mezzo ai caratteri?

    ASPETTO VOSTRA RISPOSTA...
    I Love INFORMATICA

  2. #2
    Non son sicuro di aver capito...
    Vorresti estrarre soltanto i nomi delle funzioni alle righe 1, 11, 13 e 21?
    O solo 1 e 13? O 11 e 21?
    Michele
    King Of The Kill

  3. #3
    Originariamente inviato da KingOfTheKill
    Non son sicuro di aver capito...
    Vorresti estrarre soltanto i nomi delle funzioni alle righe 1, 11, 13 e 21?
    O solo 1 e 13? O 11 e 21?
    Voglio solo prendere i nomi delle funzioni 1, 13...
    I Love INFORMATICA

  4. #4
    Ok, prova così:

    Codice PHP:
    <?php
    $file_content 
    file_get_contents('mio_file.txt');

    # ottengo esattamente le righe partendo da void
    $results preg_match_all('%void[\s]+[^\{]+%is'$file_content$functions);
    print_r($functions);

    function 
    cleanFunctionNames($input) {
        if (
    is_array($input) && sizeof($input)) {
            foreach (
    $input as $key => $sub_item) {
                
    $input[$key] = cleanFunctionNames($sub_item);
            }
        } else if (
    is_string($input)) {
            
    $input preg_replace('%^void[\s]+|[^\)]*$%is'''$input);
        }
        return 
    $input;
    }

    # pulisco i risultati precedenti (togliendo la parola "void" e tutto quello che viene dopo la chiusura della parentesi tonda
    $functions cleanFunctionNames($functions);
    print_r($functions);
    ?>
    Michele
    King Of The Kill

  5. #5
    Grazie mille, funziona perfettamenteeeeeeeeeeeeeeeeeeeeeee
    I Love INFORMATICA

  6. #6
    di niente!
    Michele
    King Of The Kill

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 © 2025 vBulletin Solutions, Inc. All rights reserved.