Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Errore in ciclo WHILE

  1. #1

    Errore in ciclo WHILE

    Salve.
    Ho inserito questo pezzo di codice (non scritto da me) in uno script.
    Lo script estrai i tag da alcuni file ogg e poichè a volte la chiave $info[title] è sbagliata (a volte è $info[Title], a volte $info[,TITLE] e così via a caso), il codice qui sotto dovrebbe "uniformare" questa chiave in $info[title]:
    Codice PHP:
    while (list($key) = each($info)) {
      if (
    preg_match('/.*title.*/i'$key$matches)) {
      
    $title $info[$matches[0]];
      unset(
    $info[$key]);
      
    $info['title'] = $title;
      break;
      }

    Questo viene eseguito per ogni file (sono moooolti).
    Posto che lo script senza questo pezzo di codice funziona bene (ma con il disguido che ho spiegato sopra), se inserisco questo codice e stampo per ogni file, alla fine di tutte le operazioni, la variabile $info[title], ottengo un output di questo tipo:

    codice:
    La violenza
    La violenzaContessa
    Stalingrado
    StalingradoLa rabbia esplode a reggio calabria
    StalingradoLa rabbia esplode a reggio calabriaTu compagno
    StalingradoLa rabbia esplode a reggio calabriaTu compagnoUguaglianza
    Siamo l'Emilia rossa
    La Manifestazione
    Rosso un fiore
    L'ora del fucile
    Stato e Padroni
    Stato e PadroniUguaglianza
    Stato e PadroniUguaglianzaO cara moglie
    Stato e PadroniUguaglianzaO cara moglieio so che un giorno
    Stato e PadroniUguaglianzaO cara moglieio so che un giornoContessa
    Lotta continua
    La canzone della classe dirigente
    Ballata autocritica
    Al referendum rispondiamo "NO"
    Al referendum rispondiamo "NO"Il nostro giorno primo maggio
    Al referendum rispondiamo "NO"Il nostro giorno primo maggioA flobert
    Certo i padroni morranno
    Certo i padroni morrannoFranti garrone pinocchio e la fatina
    Certo i padroni morrannoFranti garrone pinocchio e la fatinaRicordo di Togliatti
    I quattro cavalieri dell'apocalisse
    La ballata della fiat
    La ballata della fiatCompagno sembra ieri
    La ballata della fiatCompagno sembra ieriCon de gasperi non se magna
    Compagno saltarelli
    Compagno saltarelliIo so che un giorno
    Compagno saltarelliIo so che un giornoI treni per reggio calabria
    Compagno saltarelliIo so che un giornoI treni per reggio calabriaMio caro padrone domani ti sparo
    Compagno saltarelliIo so che un giornoI treni per reggio calabriaMio caro padrone domani ti sparoE' finito il sessantotto
    Insomma, è che come se si "ricordasse" il valore di $info[title] e lo accodasse ogni volta, salvo che ogni tanto riparte "da zero".

    Qualcuno sa indicarmi dove sta l'errore??
    Grazie,
    Sergej
    :: Il Deposito
    Canti di protesta politica e sociale
    Archivio di testi e accordi

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591

    Re: Errore in ciclo WHILE

    prova con ...
    Codice PHP:

      
    if (preg_match('/.*[Tt][Ii][Tt][Ll][Ee].*/i'$key$matches)) { 

  3. #3
    Niente, non cambia nulla

    Sergej
    :: Il Deposito
    Canti di protesta politica e sociale
    Archivio di testi e accordi

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    Strano , prova questo codice esempio e vedrai che funziona
    codice:
    <?
    $test=" i testi";
    $test1="tEsti di mia nonna";
    $test2=" Testina di ";
    $test3="TestO";
    if (preg_match("/[Tt][Ee][Ss][Tt][Ii]/", $test)) 
    	{
    	echo "\n\r Trovato ".$test;
    }
    if (preg_match("/[Tt][Ee][Ss][Tt][Ii]/", $test1)) {
    	echo "\n\r Trovato ".$test1;
    }
    if (preg_match("/[Tt][Ee][Ss][Tt][Ii]/", $test2)) {
    	echo "\n\r Trovato ".$test2;
    }
    if (preg_match("/[Tt][Ee][Ss][Tt][Ii]/", $test3)) {
    	echo "\n\r Trovato ".$test3;
    }
    
    ?>
    o l'errore sta da un'altra parte.

  5. #5
    Lo script fa il suo dovere, ovvero "uniforma" i vari "title". "TITLE", ",TitlE", etc.

    Il problema è che sembra "ricordarsi" la variabile (ovvero il suo contenuto)...

    Mi chiedo come faccia, visto che lo script intero viene eseguito una volta per ogni file, e ogni volta l'array viene sovrascritto...

    Sergej
    :: Il Deposito
    Canti di protesta politica e sociale
    Archivio di testi e accordi

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    prova a postare + codice per capire come ottieni quell'output

  7. #7
    Ecco lo script completo.

    Il file scansione.php:
    Codice PHP:
    <?

    function getFiles($directory) {
       include (
    "connessione_db.php.inc");
       if(
    $dir opendir($directory)) {
           
    // Create an array for all files found
           
    $tmp = Array();


           
    // Add the files
           
    while($file readdir($dir)) {
               
    // Make sure the file exists
               
    if($file != "." && $file != ".." && $file[0] != '.') {
                   
    // If it's a directiry, list all files within it
                   //echo ("$file");
                   
    if(is_dir($directory "/" $file)) {
                       
    $tmp2 getFiles($directory "/" $file);
                       if(
    is_array($tmp2)) {
                           
    $tmp array_merge($tmp$tmp2);
                       }
                   } else {
                       
    array_push($tmp$directory "/" $file);
                       
    $f $file;
                       
    $e str_replace("./brani/"""$directory);
                       
    //echo ("$e - $f
    ");
                       include ("
    estrai_dati.php");

    $autore = addslashes(htmlentities($info['artist'], ENT_QUOTES));
    if (
    $info['date'] != "") { $anno_ver = $info['date'];}
        else {  
    $anno_ver = "";}


                       while (list(
    $key) = each($info)) {
                 if (preg_match('/.*title.*/i', 
    $key$matches))                              {
                   
    $title = $info[$matches[0]];
                             unset(
    $info[$key]);
                 
    $info['title'] = $title;
                     break;
                     }
               }

    $dimensione = $grandezza_mega;
    $cartella = $e;
    $album = $e;
    $nomefile = $f;
    $controlla_file = mysql_query("SELECT FROM mp38 where nomefile '$f'
    AND cartella '$e';");
    if (mysql_num_rows(
    $controlla_file) < 1 AND $e != '.' AND $f != '..' ) {
                       
    $add = mysql_query("INSERT INTO mp38 VALUES ('' ,
    '$info[title]' '$autore' '' '$anno_or' '$anno_ver' 'no' ,
    '$nomefile' '$cartella' '$album''$dimensione' '' 'no' ,
    '$note');");
                      // stampa gli eventuali errori
                       //echo mysql_errno() . "
    " . mysql_error(). "\n";
                       //echo ("
    <div style=\"font-size:10px; font-family:
    Verdana;\">
    $title<div>");
                       unset(
    $info['title']);

                }


                   }            
               }
           }


           
    // Finish off the function
           
    closedir($dir);

           return 
    $tmp;
       }

    mysql_close ($connect_db);
    }

    // Example of use
    getFiles('./brani'); // This will find all files in the current
    directory and all subdirectories
    ?>
    e il file estrai_dati.php che viene incluso in scansione.php:
    Codice PHP:
    <?
    $filename
    ="./brani/$e/$f";
        
    $fp fopen$filename'r');
        
    $info = array();
        
    $info['size'] = filesize$filename );
        
    $info['name'] = basename$filename );
        
    $info['path'] = dirname$filename );

    $done false;
        while( 
    $done == false ) {
            
    $working fread$fp);
            if( 
    $working == "l" ) {
                
    $working .= fread$fp);
                
    //print $working.'
    ';
                if( $working == "libVorbis" ) {
                    $done = true;
                    //echo ("sergio");
                    }
            }
        }

       while( ord( $working ) > 31 ) {
            $working = fread( $fp, 1 );
        }
        $tag = "";
        while( $tag != "done" ) {

            $working = "";
            while( ( $working != "=" ) && ( $tag != "done" ) ) {
                if( ord( $working ) > 31 ) {
                    $tag .= $working;
                }
                $working = fread( $fp, 1 );
                if( $tag == "v" ) {
                    $tag .= "o".fread( $fp, 9 );
                if( ( substr_count( $tag, "vorbis" ) == 1 ) && (
    substr_count( $tag, "BCV" ) == 1 ) ) {
                        $tag = "done";
                    } else {
                        fseek( $fp, ( ftell( $fp ) - 10 ) );
                    }
                }
            }

            if( $tag != "done" ) {
                $working = fread( $fp, 1 );
                while( ord( $working ) > 31 ) {
                    $title .= $working;
                    $working = fread( $fp, 1 );
                }
                $info[$tag] = $title;
                $tag = "";
                $title = "";
            }
        }
        fclose( $fp );

        // calcolo la grandezza del file in megabyte
        $grandezza_byte = $info['
    size'] / 1048576;
        $grandezza_mega = round($grandezza_byte, 2);
        //print_r($info);
        return $info;
    ?>
    Sergej
    :: Il Deposito
    Canti di protesta politica e sociale
    Archivio di testi e accordi

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    i titoli dell'output sono contenuti in file della stessa cartella o si riesce a stabilire qualche tipo di logica "concatenazione/cartelle"?

  9. #9
    Boh, non sembra esserci nessuna logica.
    A volte titoli della stessa cartella vengono visualizzati da soli, a volte "concatenati"...

    Sergej
    :: Il Deposito
    Canti di protesta politica e sociale
    Archivio di testi e accordi

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.