Visualizzazione risultati 1 fino 5 di 5

Discussione: [PHP] Espressioni regolari... funzione ereg()

  1. #1
    Guest

    Predefinito [PHP] Espressioni regolari... funzione ereg()

    Salve ho un piccolo problema
    Da poco ho seguito una guida sulle espressioni regolari e sono rimasto un po impressionato e ho provato a usarle, ma non riesco a capire come mai non funzionino...

    leggo un file, ad esempio un html tramite la funzione file()

    con un ciclo foreach , per ogni riga del file uso un ereg per cercare un certo tag, ad esempio un <a href=" indirizzo "> e con il parametro facoltativo della funzione ereg, quello che mi mette le parti della stringa in un array, dovrei essere in grado di ricavarne l'indirizzo... eppure nulla!

    ho provato con un file di un videogioco di macchine al cui interno sta salvato il tempo migliore della gara, e sta salvato sotto questa forma:

    Codice:
     <times best="21680" respawns="0" stuntscore="9" validable="1"/>
    io uso questa funzione, e dovrei riuscire tramite l'array $regs a ricavare il numero: 21680 che sarebbe il tempo in millisecondi:

    Codice PHP:
    foreach (file($corrente) as $linea)
    {
    $path = '(<times best=")([0-9]+)(")';
    if (
    ereg($path,$linea,$regs))
    echo
    $reg[1];
    }
    eppure in output non da nulla, come se non trovasse quella espressione, che pero controllando a mano c'e!

    Qualcuno di voi saprebbe dirmi se ho sbagliato qualcosa e magari come risolvere il problema?

  2. #2
    L'avatar di mythologia
    mythologia non è connesso Moderatore
    Data registrazione
    05-01-2004
    Messaggi
    2,614

    Predefinito

    Credo sia solo per un errore di distrazione.

    Codice PHP:
    foreach (file($corrente) as $linea)
    {
    $path = '(<times best=")([0-9]+)(")';
    if (
    ereg($path,$linea,$regs))
    echo
    $regs[1];
    }
    Manca la s a $regs

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da mythologia Visualizza messaggio
    Credo sia solo per un errore di distrazione.

    Codice PHP:
    foreach (file($corrente) as $linea)
    {
    $path = '(<times best=")([0-9]+)(")';
    if (
    ereg($path,$linea,$regs))
    echo
    $regs[1];
    }
    Manca la s a $regs
    Penso ci sia un problema con l'espressione regolare, ho corretto tutto eppure ancora nulla... posto il codice completo, aggiungendo che il file e in formato Replay.Gbx

    Codice PHP:
    <?php
    // opzioni di configurazione
    $directory = 'replay';

    // non modificare qua sotto
    chdir($directory);
    $files = glob("*.Replay.Gbx");

    foreach (
    $files as $corrente)
    {
    foreach (
    file($corrente) as $linea)
    {
    $path = '(<times best=")([0-9]+)(")';
    if (
    ereg($path,$linea,$regs))
    echo
    $regs[1];
    }
    }

    ?>
    output bianco
    Ultima modifica di Dharlet : 18-08-2007 alle ore 16.30.44

  4. #4
    Guest

    Predefinito

    Codice PHP:
    foreach (file($corrente) as $linea)
    {
    $path = '#<times best="([\d]*)" respawns="([\d]*)" stuntscore="([\d]*)" validable="([\d]*)"/>#is';
    if (
    preg_match_all($path, $linea, $regs) )
    echo
    $regs[1];
    }
    prova...

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da jostock Visualizza messaggio
    Codice PHP:
    foreach (file($corrente) as $linea)
    {
    $path = '#<times best="([\d]*)" respawns="([\d]*)" stuntscore="([\d]*)" validable="([\d]*)"/>#is';
    if (
    preg_match_all($path, $linea, $regs) )
    echo
    $regs[1];
    }
    prova...
    mi esce scritto:
    Array

    ed esce scritto una volta nonostante i file siano due
    in ogni caso forse dovevo dirvi che prima e dopo di quel tag potrebbero esserci altri caratteri, non occupa sempre da solo la stessa riga

    EDIT ho sostituito preg_match_all() con preg_match() e funziona, mi restituisce il numero, però lo fa una volta nonostante i file siano due.... :S

    RIEDIT: era un file che aveva problemi... quel path funziona indipendentemente dal fatto che la linea che cerco sia ad inizio riga o meno?
    Ultima modifica di Dharlet : 18-08-2007 alle ore 18.47.17

Regole di scrittura

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