preg_match problem

Feuerkelch

Grünschnabel
PHP:
function verifyMail($mail) {
  return preg_match('/\b[a-z0-9._%-]+@[a-z0-9.-]+\.[a-z]{2,6}\b/i', $mail) == 0 ? false : true;
}

ich habe diese funktion um emails zu überprüfen und sie funktioniert auch, aber ich brauche noch eine weitere funktion dieser sorte, um usernamen zu prüfen...
was ich brauche ist ein preg_match, dass den namen nach sonderzeichen durchsucht und bei fund ein false ausspuckt und wenn es nichts findet soll true ausgegeben werden. der sinn dahinter ist, dass ich für die usernamen alle buchstaben, sowie umlaute, akzente und zahlen erlauben will. also sollte ein name wie "Bräs4ká" true ausgeben. Ganz wichtig ist auch, dass bei Leerzeichen ebenfalls false raus kommt, denn die mag ich net :D
 
Hi,

das geht ganz einfach mit:
PHP:
// Zeichenzahl egal:
$pattern = '/^[\w]+$/';
// Mindestens 3 Zeichen:
$pattern = '/^[\w]{3,}$/';
 
Zuletzt bearbeitet:
kannst du das, was du geschrieben hast mal kurz erlaeutern?

also was ich will ist, dass zwar alle buchstaben,umlaute,akzente und zahlen erlaubt sind, nict aber sonderzeichen wie "!" oder "^" und kein space. ich weiss nicht ob das in deinem script beruecksichigt wird,denn es sieht mir ein wenig kurz aus :D
 
Dies
Code:
[\w]
entspricht folgender Notation:
Code:
[a-zA-Z_0-9]

Du müsstest Umlaute noch selbst hinzufügen! Das {3,} und das + hat Loomes ja durch seine Kommentare erklärt!
 
\w findet alphanumerische Zeichen, auch Umlaute. Sollte zumindest. Bei mir tut das.

Wieso probierst du es nicht einfach aus?
 
geht net... wenn ich \w nutze, dann akzeptiert der nur buchstaben und zahlen, aber keine umlaute oder akzente... ich will halt, dass ein name mit ö und á und sowas a
erlaubt ist, nicht aber mit ! oder &
clear? :D
 
Zuletzt bearbeitet:
\w findet alphanumerische Zeichen, auch Umlaute. Sollte zumindest. Bei mir tut das.

Wieso probierst du es nicht einfach aus?

Das hängt von den lokalen Spracheinstellungen ab. ist dort de festgelegt, werden deutsche Umlaute akzeptiert....bei fr halt französische Akzente usw.

Um dort in jeder Umgebung das gleiche Ergebnis zu erhalten, müsste man in der Tat wie von asipak4you erwähnt die einzelnen Buchstaben(ab ASCII-Position 128) detailliert im Ausdruck benennen.
 
PHP:
function verifyName($name) {
  return preg_match('/^[A-Za-z0-9öäüáàâéèêíìîóòôúùûß@._-]{3,}$/', $name) == 0 ? false : true;
}

ok, so funkt es... danke allen für ihre beiträge :)
 
Ja, da hatte ich voreilig geantwortet. Ich schreibe meine Regex im Regex Coach und der zeigte mir folgendes:
regex_coach.png

Ich dachte es würde an der Zeichenkodierung oder so liegen. Man lernt nie aus, danke Sven ;)
 
Zurück