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

    Controllo dei dati letti con fread

    Buongiorno a tutti, sto facendo una classe per gestire i template, ed ho un problema nel controllo del testo ricavato dalla lettura di un file.
    Mi spiego meglio: apro un file .htm con fopen, lo leggo con fread, lo divido in un array per ogni riga, e vorrei sapere quando compare una tot riga che contiene un determinato testo.
    Ho provato con array_search, ma non va, ho provato anche a fare un ciclo for e controllare ogni riga, ma non capisco il perchè è come se non lo vedesse.
    Il codice è il seguente:
    Codice PHP:
    function find_tag($tag){
                
    $html htmlentities($this->template);
                
    $html split("\n",$html);    
                for(
    $i 0$i sizeof($html); $i++){
                    if(
    $html[$i] == "<!--#form_begin#-->"){
                        echo 
    "trovato";
                    }
                }
    //endfor    
                
    $chiave array_search("<!--#form_begin#-->",$html);
                echo 
    $chiave;
            }
    //endfunction 
    Praticamente devo cercare e sapere a che riga è, ho provato anche senza htmlentities e mettendo i caratteri < > al posto delle entità html, ma niente, ho provato a cercare anche una parola "prova" che sta sempre nel file html ad una determinata riga ma è come se non la vedesse, però se facessi echo $html[$i] mi mostra correttamente tutto il codice del file aperto.
    Perchè l'if o l'array_search non vede? Ci sono forse dei caratteri nascosti che io ignoro?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    595
    Se la suddivisione in righe l'hai fatto con l'istruzione file(), avrai il codice "a capo" a fine riga e comunque il modo che usi non va bene, perchè non gestisce eventuali spazi e tabulazioni
    Sostituisci questa riga
    Codice PHP:
    if($html[$i] == "&lt;!--#form_begin#--&gt;"
    Con quest'altra
    Codice PHP:
    if(strpos($html[$i],"&lt;!--#form_begin#--&gt;")!==false
    E dovrebbe andare bene... ma credo che al posto di "&lt;!--#form_begin#--&gt;" tu debba mettere "" perchè dubito che nell'html i commenti li metti con "&lt;" poichè non apparirebbero come commenti

    P.S.
    Occhio che ho messo "!==" e non "!=" per un motivo VALIDO. Se metti "!=" e la stringa è proprio all'inizio, strpos() restituisce zero che "!=" gestice come false, invece "!==" lo gestisce proprio come il boolean "false" e quindi va nella else solo se la stringa proprio non c'è

  3. #3
    Il file lo apro con fopen e successivamente lo leggo con fread

    Codice PHP:
    //Funzione che apre la pagina html
            
    function open_tpl($file){
                
    $basedir $_SERVER['DOCUMENT_ROOT'].$this->server_addmainpath."/";            
                
    //Apro il file in sola lettura
                
    $tpl_file fopen($basedir.$file,"r");
                
    //Sposto il file su una variabile
                
    $this->template fread($tpl_file,filesize($basedir.$file));
                            
                
    //Chiudo la lettura del file
                
    fclose($tpl_file);
            }
    //endfunction 
    Cmq con il controllo che hai fatto tu funge, quello che non continuo a capire è il perchè non funzioni l'array_search, è quello che non capisco.
    Cmq grazie

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.