ciao,
allora ho un file txt del tipo
id|data|corso|nome|email|messaggio

campiriga[0] è l'id
campiriga[1] è la data
ecc.

questo file lo riempio attraverso un form per l'inserimento di messaggi.

nella bacheca voglio stampare ogni singolo messaggio in modo tale che se sono troppo lunghi li accorcio con "[...dettagli]" e cliccandoci sopra si apre un popup nel quale recupero tutti i dati di quel messaggio e li stampo a video.
Inoltre ho inserito una funzione in modo da stampare xxxx al posto di parole poco carine.
questo è il file:
Codice PHP:
<?php
function myfragment($str$n$delim='[...]'

   
$len strlen($str); 
  
   if (
$len $n) { 
       
preg_match('/(.{' $n '}.*?)b/s'$str$matches); 
       return 
rtrim($matches[1]) . $delim
   } 
   else 
       return 
$str
 
}
function 
strSelect$myString$maxLength ) {
    
$out "";
    
$s explode" ",$myString );
    for( 
$i 0$cs count$s ); $i $cs$i++ ) {
        
$out .= $s[$i]." ";
        if( isSet( 
$s[$i+1] ) && ( strlen$out ) + strlen$s[$i+1] ) ) > $maxLength ) {
            break;
        }
    }
    return 
rtrim$out );
}
$common file('public/bacheca/db/stopwords.txt'); 

$total count($common);     

for (
$x=0$x $total$x++) 
    
$common[$x] = '/'.trim(strtolower($common[$x])).'/i'

$contatore 0
$textfile fopen("public/bacheca/db/messaggi.txt""r"); 

while (
$rigafile fgets($textfile,1024)) 

$campiriga explode("|"$rigafile); 

$messaggioCensuratopreg_replace($common'XXXX'$campiriga[5]); 

$corso_corto strSelect$campiriga[2], 40 )."...";

$messaggio_link myfragment($messaggioCensurato,20,'[[url="messaggiosingolo.php?id=$campiriga[0]"]...dettagli [/url]]');

echo 
"<font color=#ff9900>-</font>$campiriga[1]-$corso_corto-".stripslashes($messaggio_link)."-[b]$campiriga[3][/b]
"



fclose($textfile); 
?>
mentre questo è il file "messaggiosingolo.php" dove "cerco" di recuperare i dati. Dico cerco perchè mi recupera solo i dati dell'ultimo messaggio in bacheca e non quelli relativi al messaggio che clicco...non capisco perchè.
Codice PHP:
<?php
$id 
$_GET["id"];
$textfile fopen("public/bacheca/db/messaggi.txt""r");

while ( 
$rigafile fgets($textfile,1024)) {
 
$campiriga explode("|"$rigafile);
 
$idriga $campiriga[0];

 if (
$idriga == $id) {
  
$cid $campiriga[0];
$cdata $campiriga[1];
$ccorso $campiriga[2];
$cnome $campiriga[3];
$cemail $campiriga[4];
$cmessaggio $campiriga[5];
 }

}
fclose($textfile);
?>
...
...
...
<span class="Stile3">[b]Data[/b]</span>
                    <input name="data" type="text" class="Stile4" value="<?=$campiriga[1]?>" size="15">
                    

                    <span class="Stile3">[b]Corso[/b]</span>
                    <input name="corso" type="text" class="Stile4" value="<?=$campiriga[2]?>" size="75">
                    

                    <strong class="Stile3">Nome[/b]
                    <input name="nome" type="text" class="Stile4" value="<?=$campiriga[3]?>" size="25">
                    

                    <strong class="Stile3">Messaggio[/b]
                    <textarea name="messaggio" cols="60" class="Stile4"><?=$campiriga[5]?></textarea>
Inoltre, in bacheca, quando inserisco un messaggio troppo lungo mi da
Undefined offset: 1 nella riga corrispondente a
Codice PHP:
return rtrim($matches[1]) . $delim
Ho notato, aggiungendo l'istruzione per far aprire il popup, che non mi recupera più l'id e di conseguenza mi da errore Undefined variable $id = $_GET["id"]

Come posso fare?
Ti ringrazio anticipatamente,
cicileu