IF-Abfrage mit ctype_alpha

Alice

Erfahrenes Mitglied
Hallo. :)

Ich habe eine IF-Abfrage bei der ist nicht so recht weiter komme.

PHP:
if (ctype_alnum($var1.$var2.$var3.$var4) AND strlen($var1.$var2.$var3.$var4) == '100' {
   echo 'Error!';
}

Ich möchte eigentlich nur prüfen (erster Teil) ob die Variablen nur mit Buchstaben, Zahlen und Umlauten gefüllt sind.

Die Frage ist:
Erfasst "ctype_alnum" überhaupt deutsche Umlaute?

Ich hatte es vorher mit diesem Code versucht aber leider geht es damit nicht. Wobei mir dieser Code aber lieber wäre.

PHP:
if (substr_count($var1.$var2.$var3.$var4, "/^([A-Z0-9ÄÖÜ])$/") 
      AND 
   strlen($var1.$var2.$var3.$var4) == '100' {

   echo 'Error!';

}

Edit: Ich habe die Abfrage EXTRA auf 3 Zeilen verteilt.
 
Versuch es doch mal so:
PHP:
if(preg_match('/^[[:alnum:]äöüÄÖÜß]{100}$/', $var1 . $var2 . $var3 . $var4) !== 1) {
  echo 'error';
}
Soll die Zeichenkette genau einhundert Zeichen lang sein? Ansonsten nimm folgenden Skriptschnipsel:
PHP:
if(preg_match('/^[[:alnum:]äöüÄÖÜß]$/', $var1 . $var2 . $var3 . $var4) !== 1) {
  echo 'error';
}
 
Versuch es doch mal so:
PHP:
if(preg_match('/^[[:alnum:]äöüÄÖÜß]{100}$/', $var1 . $var2 . $var3 . $var4) !== 1) {
  echo 'error';
}
Soll die Zeichenkette genau einhundert Zeichen lang sein? Ansonsten nimm folgenden Skriptschnipsel:
PHP:
if(preg_match('/^[[:alnum:]äöüÄÖÜß]$/', $var1 . $var2 . $var3 . $var4) !== 1) {
  echo 'error';
}

Das ist aber nicht das was ich brauche.

Die IF-Abfrage lautet in Worten:
Besteht Var1, Var2, Var3 und Var4 nur aus Zahlen und Buchstaben UND ist Var1, Var2, Var3 und Var4 genau 100 Zeichen lang, dann...

Ich muss mir sicher gehen das in den Variablen nur Buchstaben, Zahlen und Umlaute vorkommen und das die Variablen zusammen nicht länger ist als 100.

Berücksichtigt "alnum" Umlaute oder nicht?

Weisst du warum diese IF-Abfrage nicht funktioniert?

PHP:
if (substr_count($var1.$var2.$var3.$var4, "/^([A-Z0-9ÄÖÜ])$/") {

   echo 'Error!';

}

Ich habe die 2. IF-Abfrage aus Gründen der Übersicht ausgelassen.
 
Du meinst also, dass var1, var2, var3, var4 je 100 Zeichen lang sein sollen? Ansonsten: substr_count verlangt als zweites Argument eine Zeichenmenge und keinen regulären Ausdruck.
 
[phpf]substr_count[/phpf] kann doch gar nicht mit regulären Ausdrücken umgehen.

Versuche mal folgendes:
PHP:
$total = $var1.$var2.$var3.$var4;
$pattern = '/^[\wäöüÄÖÜß]{100}$/';

if ( preg_match($pattern, $total) !== 0 )
{
  // Okay, let's do something
}
else
{
  // Error!
}

Falls $var1, ... $var4 jeweils 100 Zeichen lang sein sollen:
PHP:
$pattern = '/^[\wäöüÄÖÜß]{400}$/';
 
@einfach nur crack:

php.net hat gesagt.:
preg_match() returns the number of times pattern matches. That will be either 0 times (no match) or 1 time because preg_match() will stop searching after the first match. preg_match_all() on the contrary will continue until it reaches the end of subject. preg_match() returns FALSE if an error occurred.
[phpf]preg_match[/phpf] gibt nur false zurück, wenn ein Fehler aufgetreten ist, also der reguläre Ausdruck nicht valide ist, etc.
Ansonsten wird eben 0 oder 1 zurückgegeben ;)
Oder habe ich etwas übersehen?
 
Du meinst also, dass var1, var2, var3, var4 je 100 Zeichen lang sein sollen? Ansonsten: substr_count verlangt als zweites Argument eine Zeichenmenge und keinen regulären Ausdruck.

Nein.

Ich möchte das abgefragt wird ob in den Variablen nur Buchstaben, Umlaute und Zahlen vorkommen. Wenn nur Buchstaben, Umlaute und Zahlen festgestellt werden, soll TRUE ausgegeben werden.
 
Na dann ganz ohne Längenbeschränkungen:
PHP:
$total = $var1.$var2.$var3.$var4;
$pattern = '/^[\wäöüÄÖÜß]*$/';

if ( preg_match($pattern, $total) !== 0 )
{
  echo "TRUE";   // TRUE ausgeben
}

Edit:

\w enthält auch den Unterstrich. Deshalb nimm lieber folgendes Pattern:
PHP:
$pattern = '/^[\da-zA-ZäöüÄÖÜß]*$/';
Sorry ;)
 
Zuletzt bearbeitet:
Muss das nicht eher so aussehen?

PHP:
$pattern = '^/[A-Z0-9ÄÖÜ]*$/'; // Das sind die Zeichen nach denen ich Abfragen möchte
 
Zurück