Glory: PHP-Fehlermeldung

Beitrag lesen

$verbot = array
  (
  "<a href=" ,
  "Viagra" ,
  "[url" ,
  );

$cuss = 0;

Wofür steht "cuss"? Der Name einer Variable sollte etwas über ihre Bedeutung aussagen. Abkürzungen sind in den meisten Fällen zu vermeiden.

foreach ($verbot as $v)

Siehe oben. (was ist "v"? "value"?)
Falls du vorhast, dich ernsthafter mit PHP und dem Programmieren zu beschäftigen, solltest du deinen Variablen englische Bezeichnungen geben.

$cuss = $cuss + 1;

Besser: ++$cuss; Tut das gleiche.

if (!preg_match("/$v/i", $eintrag))
  {
  $cuss = $cuss + 0;
  }

das hättest du dir auch ganz sparen können ;)

}

  

> Später prüfe ich dann, ob $cuss > 1, was zur Ablehnung des Eintrages führt.  
>   
> Irgendwie bekomme ich jetzt aber neuerdings die Fehlermeldung:  
> "Warning: preg\_match() [function.preg-match]: Compilation failed: missing terminating ] for character class at offset 4 ...", obwohl ich eigentlich nichts - zumindest nicht bewusst - an dem Script geändert habe.  
  
Dann war es ein Geist. Aber die Meldung sagt doch alles. "missing terminating ]" - aha, es fehlt ein schließendes "]". "[" und "]" werden angegeben um Zeichenklassen zu beschreiben. "[a-z]" sind z.B. alle Buchstaben von "a" bis "z". Und warum fehlt jetzt ein "]"? Na weil in deinem Array der vierte Eintrag ein "[" enthält. ("[url")  
Folglich musst du dieses "[" mit einem vorangestellen Backslash maskieren.