avevo letto solo la prima parte
per l'errore devi mettere un a+ invece che r+ alla linea 7 e controllare che la cartella abbia il permesso di scrittura.

Codice PHP:
<?php 
$nome
=$_POST['nome']; 

$content=$_POST[nome]; 
$dir="cartella/"
$dir.="nomefile.txt"

$a=nl2br(implode(""file("cartella/nomefile.txt")));
if (
preg_match("/$_POST[nome]/" $a)){
    die(
"nome già in uso");}

$handle=fopen($dir,a+); 
fwrite($handle,$content); 
fclose($handle); 
echo 
nl2br(implode(""file("cartella/nomefile.txt"))); 
?>
credo sia giusto