Quel che non andava nel codice originario è descritto nei commenti

Codice PHP:
<?php 
    $path 
"/database/bookmarks.txt"
    
$apri fopen($path,'r'); 
/*
Errore: fopen richiede un secondo argomento (numero di byte da leggere). Per leggere tutto il 
contenuto viene utilizzato come secondo argomento filesize($path). In alternativa alle tre
istruzioni fopen, fread, fclose puoi utilizzare file_get_contents
*/
    
$file fread($apri); 
    
fclose($apri); 
/*
Errore: $righe non è definito ma hai utilizzato $file per memorizzare il contenuto del file
Errore: /n è sbagliato, il new line è \n.
Errore: Racchiudere lo \n fra apici singoli non risolve l'escape ma rappresenta la stringa
costituita dai due caratteri. Con gli 'testo' puoi utilizzare per escaping solo \\\\' e \\\\ per
rappresentare la nuova linea occorre racchiudere fra "testo\n" 
*/
    
$righe=explode('/n',$righe); 
    foreach(
$righe as $campi){ 
        
$campi=explode('|',$campi); 
        
$titolo=$campi[0]; 
/*
Fonte di problemi: $campi[1] andrebbe sottoposta alla funzione urlencode
Fonte di problemi: $campi[0] andrebbe sottoposta alla funzione htmlspecialchars
*/
        
$link=$campi[1]; 
        echo 
"<a href=\"$campi[1]\">$campi[0]</a>
"
;  
    } 
?>
Non mi sembra ci sia altro