Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Espressioni regolari

  1. #1

    Espressioni regolari

    Volevo semplificare una funzione creata da me, ma siccome non me ne intendo di espressioni regolari chiedo a voi...

    Questa è la funzione:
    Codice PHP:
    function getVar($var$file){
        if(!
    file_exists($file))
            return 
    "File not found: [b]$file[/b]";

        
    $file file_get_contents($file);
        if(
    preg_match_all("/\{\*{10,}(.*?)\*{10,}\}/s"$file$return))
            if(
    preg_match_all("/$var {0,}= {0,}(.*?)\r/"$return[1][0], $returnB))
                return 
    $returnB[1][0];

    Questo il file:
    codice:
    {******************************
    title = Homepage
    description = Description
    tags = Home, Homepage, News
    ******************************}
    Adesso se io richiamo la funzione tutto funziona correttamente.

    getVar("title", "variabili.confi") restituisce Homepage.

    Io volevo sapere se era possibile unire le 2 funzioni preg_match_all in una sola.

    Grazie in anticipo

  2. #2
    Domanda:

    la formattazione del file deve essere per forza quella oppure la puoi modificare?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Io semplificherei il procedimento, Prima di tutto, a meno che il file di configurazione non sia enorme, eviterei di estrarre un valore alla volta, leggendo il file per ogni richiesta, ma estrarrei tutti i dati mettendoli in un array. Poi non serve (dato il file di esempio) stare a cercare le righe con gli asterischi, basta cercare quelle che corrispondono al formato richiesto: chiave = valore.

    Codice di esempio:
    codice:
    function get_data($file) {
        // check sull'esistenza del file
    
        $data = file_get_contents($file);
        preg_match_all('/^(.*?)\s+=\s+(.*)/m', $data, $match);
        return array_combine($match[1], $match[2]);
    }
    
    print_r(get_data('variabili.conf'));

  4. #4
    Originariamente inviato da k.b
    Io semplificherei il procedimento, Prima di tutto, a meno che il file di configurazione non sia enorme, eviterei di estrarre un valore alla volta, leggendo il file per ogni richiesta, ma estrarrei tutti i dati mettendoli in un array. Poi non serve (dato il file di esempio) stare a cercare le righe con gli asterischi, basta cercare quelle che corrispondono al formato richiesto: chiave = valore.

    Codice di esempio:
    codice:
    function get_data($file) {
        // check sull'esistenza del file
    
        $data = file_get_contents($file);
        preg_match_all('/^(.*?)\s+=\s+(.*)/m', $data, $match);
        return array_combine($match[1], $match[2]);
    }
    
    print_r(get_data('variabili.conf'));
    Guarda così è anche meglio, però non funziona

    Mi restituisce questo
    codice:
    Array ( [{****************************** title] => Gallery description = Description tags = Home, Homepage, News ******************************} )
    Deve esserci un errore nell'espressione regolare...

  5. #5
    Ma il contenuto del file e' scritto tutto su una riga?

  6. #6
    No è come ho scritto nell'esempio, però il file continua con del codice html, quindi non credo vada bene l'espressione di prima perche prnde tutti gli =.

    Io invece devo fare che prenda solo quello contenuto tra le {*** variabili ***}

  7. #7

  8. #8

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.