Non riesco a leggere un file .txt

di il
2 risposte

Non riesco a leggere un file .txt

Buongiorno,

in un programma Php  volevo usare questa funzione:

       function caricagojs1(){
   $fp1=false;
   $fgojsfile1= "x_gojs/xgojs_1";
   

$fp1 = fopen("$fgojsfile1", "r");
if(!$fp1) echo ("Errore nella operazione0 con il file $fgojsfile1");
$nr1=0;
$array1=file($fgojsfile1);
echo "numero elementi uno".count($array1). "<br />";
foreach ($array1 as $frecord){
$nr1++;
echo ("$nr1 uno = $frecord") . "<br />";
#$nG1= file_put_contents($fpathG, $frecord,FILE_APPEND);
}
 fclose($fp1);
echo ("$nr1 uno dopo close  "). "<br />";// questo non viene visualizzato

}
ma quando eseguo il programma, non leggo niente, il risultato è questo:
numero elementi uno182
1 uno =
2 uno =
3 uno =
4 uno =
5 uno =
6 uno =
7 uno =
8 uno =
9 uno =
10 uno =
11 uno = 

se invece queste istruzioni le metto in un nuovo programma, e non in una funzione,  tutto funziona bene:

<?php

   $fp1=false;
   $fgojsfile1= "x_gojs/xgojs_1";
$fp1 = fopen("$fgojsfile1", "r");
if(!$fp1) echo ("Errore nella operazione0 con il file $fgojsfile1");
$nr1=0;
        caricagojs1($fp1,$fgojsfile1);

       function caricagojs1($fp1,$fgojsfile1){
$nr1=0;
$array1=file($fgojsfile1);
echo "numero elementi ".count($array1). "\n";
foreach ($array1 as $frecord){
$nr1=$nr1+1;
echo ("$nr1 uno = $frecord"). "\n";
}
 fclose($fp1);
echo "numero elementi dopo close   ".count($array1). "\n";
}
   
?>

risultato:

danilo@ubuntuserver2204:/var/www/PhpGen_FW2$ php provaread7.php
numero elementi 182
1 uno = <!DOCTYPE html>

2 uno = <html>

3 uno = <head>

4 uno =   <meta name="viewport" content="width=device-width, initial-scale=1">

5 uno =   <title>Genogram</title>

  ///ecc. 
  ///ecc.

180 uno =       // n: name, s: sex, m: mother, f: father, ux: wife, vir: husband, a: attributes/markers

181 uno =       setupDiagram(myDiagram, [

182 uno =

numero elementi dopo close   182

perché  le stesse istruzioni  inserite in una funzione del mio programma non funzionano?

grazie per l'aiuto

danilo

2 Risposte

  • Re: Non riesco a leggere un file .txt

    La funzione definita dall'utente in assenza di return il valore restituito è di tipo null.

    Mentre l'istruzione echo effettua output su schermo.

    Inoltre ricorda se la pagina è servita come html i caratteri < e/o > esistono per creare markup HTML e normalmente un browser che supporta HTML crede sia markup e non output.

  • Re: Non riesco a leggere un file .txt

    Come osservato anche da @Hormus, se invii al browser delle stringhe contenenti HTML, questo viene interpretato dal browser.
    Quando invece lo fai da riga comandi (modalità CLI)  le stringhe non vengono interpretate, non è quindi una questione di istruzioni dentro una funzione o meno.

    Per risolvere potresti usare htmlspecialchars() quando fai output nel browser:

    <?php
    
    function caricagojs1() 
    {
    	$fgojsfile1 = 'x_gojs/xgojs_1';
       
    	if(($fp1 = fopen($fgojsfile1, 'r')) === false) {
    		echo ("Errore nella operazione0 con il file $fgojsfile1");
    		return;
    	}
    	
    	$array1 = file($fgojsfile1) ?: [];
    	
    	fclose($fp1);   // file() legge in un colpo solo il file e lo carica nell'array, possiamo quindi chiudere il puntatore al file
    	
    	echo 'Numero elementi uno: ', count($array1), '<br><br>';
    	
    	foreach ($array1 as $nr1 => $frecord) {
    	   echo "$nr1 uno = ", htmlspecialchars($frecord), '<br>';
    	}
    
    }
     
    caricagojs1();
Devi accedere o registrarti per scrivere nel forum
2 risposte