regex wort-test

jdgf

Mitglied
Hallo,
in der Shoutbox werden Buchstaben/Ziffern-Kombinationen wie "m528k" eingetragen. Diese soll die Zeile "eregi("(?i)[^aeiou]{5,}", $_POST['text'])" rausfiltern. Was ist an dem Code falsch?

PHP:
if( $_POST['shoutbox'] == "submit" )  
{  
  if(   eregi("http://", $_POST['text']) or
  	eregi("(?i)[^aeiou]{5,}", $_POST['text']) or
        eregi("url", $_POST['text']))  
  { echo template('error_url');}

Danke für die HIlfe!
Gruß, Dietmar
 
Probiers mal so:
PHP:
$str = $_POST['text'];
if(preg_match('~[a-zA-Z0-9]{5,}~si', $str) || substr($str, 0, 7) == 'http://' || strstr($str, 'url') != false)
{
  echo template('error_url');
}
 
Hallo,

danke für die schnelle Lösung. Ich habe beide Lösungen kombiniert:
PHP:
$str = $_POST['text'];
if(preg_match('#[^aeiou]{5,}#is', $str) || substr($str, 0, 7) == 'http://' || strstr($str, 'url') != false)
{echo template('error_tex');}

"(preg_match('~[a-zA-Z0-9]{5,}~si', $str)" schließt auch reguläre Worte aus.

Wäre es möglich, eine Definition aufzustellen, die das Vorhandensein von Ziffern in einer Buchstabenreihe ausschließt?

Gruß Dietmar
 
Zurück