2010-05-29 21 views
6

Ich frage mich, ob man Leerzeichen in einem Textfeld zulassen kann, wenn man es mit ctype_alpha überprüft. Da ctype_alpha nur alphabetische Buchstaben erlaubt, weiß ich nicht, wie man den Benutzer in das Feld eingibt. Ich habe versucht, ctype_space zu verwenden, aber das hat nicht funktioniert. Ich möchte einfach, dass der Benutzer nur Alphabete eingeben kann und sie haben die Wahl, Leerzeichen einzuschließen, wenn sie "wünschen". Ich hoffe, ich muss Regexp nicht verwenden.ctype_alpha aber erlauben Leerzeichen (php)

elseif (!ctype_alpha($fname)) 
{ 
    echo "Your name may only contain alphabetical letters"; 
} 

Antwort

19

das ist, was ich nur

if (!ctype_alpha(str_replace(' ', '', $fname))) 

dies ermöglicht Räume tun würde, aber wenn Sie mehr als nur Räume, wie Zeichensetzung oder was nicht zulassen wollen, read up on str_replace, erlaubt es für Arrays

str_replace(array(' ', "'", '-'), '', $fname) 

ich schlage dies, weil Vorname Apostroph haben und Nachnamen auch Striche haben

+0

Vielen Dank für den Vorschlag, es hat funktioniert, und natürlich auch danke für den Link! – Raj

+1

Freut mich zu hören, dass es für dich funktioniert hat Raj. Wenn dies Ihren Anforderungen entspricht und Sie nicht nach anderen Vorschlägen suchen, würde ich mich freuen, wenn Sie die Antwort als akzeptiert markieren :) Cheers – Raine

+0

+ 1 Creative-Lösung ermöglicht anderen Chars, unter dem Radar zu fliegen. Ich habe über diese Funktion nachgedacht, muss aber auch "-" und "_" einfügen, danke! – SeanDowney

1

Sie können das auch tun, indem Sie vor dem Ausführen von ctype_alpha einfach Speicherplatz entfernen.

$fname=str_replace(" ", "", $fname); 

if(!ctype_alpha($fname)){ 
    echo "Your name may only contain alphabetical letters"; 
} 
+0

Das Validieren einer Zeichenfolge, die nur aus Leerzeichen besteht, führt auf diese Weise zu einem falschen Ergebnis, während es zu einem wahren Ergebnis führen sollte. Dies liegt daran, dass ctype_alpha bei einer leeren Zeichenfolge false (php> v5.1) zurückgibt. –

0

die Räume Entfernen ist der Weg zu gehen, aber ctype_alpha führt zu einer falschen auf eine leere Zeichenfolge in diesen Tagen erinnern! Unter der Methode, die ich verwende ...

function validateAlpha($valueToValidate, $spaceAllowed = false) { 
    if ($spaceAllowed) { 
     $valueToValidate = str_replace(' ', '', $valueToValidate); 
    } 
    if (strlen($valueToValidate) == 0) { 
     return true; 
    } 
    return ctype_alpha($valueToValidate); 
} 
Verwandte Themen