8 Stimmen

codeigniter form validierung mit telefonnummern

Was ist ein guter Weg, um Telefonnummern zu validieren, die in Codeigniter eingegeben werden?

Ich schreibe zum ersten Mal eine Anwendung und verstehe Regex überhaupt nicht.

Ist es einfacher, drei Eingabefelder für die Rufnummer zu haben?

15voto

Dana Punkte 1430

Hier ist eine coole Regex, die ich im Internet gefunden habe. Sie validiert eine Nummer in fast jedem US-Format und wandelt sie in (xxx) xxx-xxxx um. Ich finde das großartig, weil die Leute dann eine beliebige 10-stellige US-Telefonnummer in dem Format eingeben können, das sie gewohnt sind, und man erhält eine korrekt formatierte Nummer heraus.

Hier ist die gesamte Funktion, die Sie in Ihre MY_form_validation-Klasse einfügen können. Ich wollte, dass mein Formular leere Felder zulässt, also müssen Sie es ändern, wenn Sie einen Wert erzwingen wollen.

function valid_phone_number_or_empty($value)
{
    $value = trim($value);
    if ($value == '') {
        return TRUE;
    }
    else
    {
        if (preg_match('/^\(?[0-9]{3}\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}$/', $value))
        {
            return preg_replace('/^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/', '($1) $2-$3', $value);
        }
        else
        {
            return FALSE;
        }
    }
}

3voto

Fant Punkte 39

Am besten ist es, Telefonnummern überhaupt nicht zu überprüfen, es sei denn, Sie sind sich zu 100 % sicher, dass es sich nur um Telefonnummern in den USA oder zumindest in Nordamerika handelt. Sobald Sie Telefonnummern aus Europa zulassen, glaube ich nicht, dass es eine Regex gibt, die alle Möglichkeiten abdeckt.

3voto

Dan Beam Punkte 3464

Entfernen Sie damit die Nicht-Ziffern:

$justNumbers = preg_replace( '/\D/', $_POST[ 'phone_num' ] );

und sehen Sie nach, ob es genügend Zeichen gibt!

$numRequired = 7; // make your constraints here
if( strlen( $justNumbers ) < $numRequired ){ /* ... naughty naughty ... */ }

Dies ist natürlich eine lockere Methode, die aber auch für internationale Nummern funktioniert (denn es wird nur geprüft, ob die Eingabe mehr als 7 Nummern enthält).

Ändern Sie einfach die Anzahl der erforderlichen Ziffern nach Ihren Vorgaben.

0voto

Steven Punkte 103

Die von Dan erläuterte Regex-Lösung wäre der richtige Weg - aber vielleicht sollten Sie die Validierung von Telefonnummern überhaupt noch einmal überdenken. Was ist, wenn der Benutzer eine Notiz hinzufügen möchte, wie er/sie es auf Papier tun würde? - Ich sehe viele Werte, die in die Telefonnummernfelder eingegeben werden, wie z.B.:

307-555-2323 (zu Hause)

ou

307-555-3232 nach 18 Uhr

Ich denke, wir können heute davon ausgehen, dass die Nutzer wissen, was sie eingeben müssen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X