Validierung der UK Telefon-Nummern in PHP
Kaufte ich ein Kontakt-Formular. Tolles kleines Ding, aber ich brauche zum konvertieren der Validierung des Telefon-Nummer zu ermöglichen UK-Nummer-Formate - in anderen Worten, um zu ermöglichen, die für Räume.
Jetzt überprüft er, ohne Leerzeichen und hat eine minimale Länge von 8 Zeichen:
if(is_numeric($phone))
{
if(!$phone || strlen($phone) < 8)
{
$error .= "Please enter your phone number without spaces.<br />";
}
}
else
{
$error .= "Please enter numeric characters in the phone number field.<br />";
}
es wäre hilfreich, wenn könnten Sie 'Vorlage' für UK-phone 🙂
ok Frage, wie stark der Validierung willst du? auch was die Länge der uk phonenum
Dies hängt von den Formaten, die Sie wollen, zu akzeptieren, wie viele Menschen geben Ihre Telefonnummern anders also +44(0)1234567890, 01234567890, 01234 567890, 0208 1234 567, 020 1234 5678 etc. Können Sie können lassen Sie uns wissen, welches Sie annehmen möchten, oder wenn Sie möchten, akzeptieren Sie alle regelmäßigen Formate?
Hallo! Sorry war die ganze Nacht auf der Baustelle tätig. Ich bin nicht allzu gestört über die verschiedenen Möglichkeiten, die alle Möglichkeiten wäre gut. Ich bin nicht gut mit PHP aus, so dass jede Hilfe wäre sehr geschätzt werden.
Siehe auch stackoverflow.com/questions/32401/validate-a-uk-phone-number
ok Frage, wie stark der Validierung willst du? auch was die Länge der uk phonenum
Dies hängt von den Formaten, die Sie wollen, zu akzeptieren, wie viele Menschen geben Ihre Telefonnummern anders also +44(0)1234567890, 01234567890, 01234 567890, 0208 1234 567, 020 1234 5678 etc. Können Sie können lassen Sie uns wissen, welches Sie annehmen möchten, oder wenn Sie möchten, akzeptieren Sie alle regelmäßigen Formate?
Hallo! Sorry war die ganze Nacht auf der Baustelle tätig. Ich bin nicht allzu gestört über die verschiedenen Möglichkeiten, die alle Möglichkeiten wäre gut. Ich bin nicht gut mit PHP aus, so dass jede Hilfe wäre sehr geschätzt werden.
Siehe auch stackoverflow.com/questions/32401/validate-a-uk-phone-number
InformationsquelleAutor Richard Bland | 2011-11-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Telefonnummern sind in der Regel schrecklich für regex-Muster, die ist, was Sie brauchen.
Dieses Muster zum Beispiel:
Muster passen zu +44 enthalten oder nicht z.B.
alle diese Spiel:
Diese nicht
Gibt es einen laden von Websites, die tutorials /cheat-sheets etc. für reguläre Ausdrücke versuchen Sie, einige dieser:
http://regexlib.com/Default.aspx
sowie ein sehr gutes stack-overflow-post:
Eine umfassende regex für die Telefonnummer validation
ist das nicht wieder ungültig für nicht-mobile-Nummern (07)?
ja, es funktioniert nur überprüfen UK mobile zahlen, aber ist sehr leicht angepasst werden, um zu validieren Festnetz-Nummern.
könnten Sie mir einen Zeiger auf, wie Sie zu Bearbeiten für Festnetz-Validierung? Dank
InformationsquelleAutor David Barker
So Sie nur wollen, zu ermöglichen Räume?
Dann könnten Sie
str_replace()
zu ignorieren, Leerzeichen, gleich am Anfang:InformationsquelleAutor
Die
is_numeric
- Funktion , dass Sie nicht wirklich eine passende Wahl für amerikanische Telefonnummern. Zum Beispiel ist es akzeptiert hexadezimalen zahlen wie0xABCDEF
, die es ablehnen sollten.Zur einfachen text-matching wie diese, reguläre Ausdrücke sind oft die einfachste Lösung. Ein regulärer Ausdruck gibt ein Muster von text. PHP hat Funktionen, damit Sie für die Suche oder ersetzen mit regulären Ausdruck entspricht im text.
Wenn Sie definieren eine Telefon-Nummer als string mit mindestens 7 Zeichen enthalten nur Ziffern und Leerzeichen, wird der entsprechende reguläre Ausdruck wäre
/^[0-9 ]{7,}$/
. Der text innerhalb der Klammern repräsentiert eine Menge von Zeichen, die{7,}
zeigt, dass wir suchen für mindestens 7 dieser Zeichen in einer Zeile, und die^
und$
zeigen, dass unser match sollte an den Anfang des Strings Ende des Strings. Die PHP-Dokumentation ein Kapitel erklärt, reguläre Ausdrücke im detail.Verwenden Sie die
preg_match
- Funktion zuSicherstellung der Telefon-Nummer gefunden:
preg_match('/^[0-9 ]+$/', $phone)
? Frage nur, da ich nicht sehr viel Erfahrung mit regulären Ausdrücken.Ich habe einen Fehler gemacht, du hast Recht.
Wie würde geschrieben werden, in eine vollständige Erklärung? Bin ich die änderung der is_numeric Funktion der bits in der if(!$Telefon || strlen($Tel) < 8)? - Ich entschuldige mich für so dumm mit PHP... ;-p
Dieser Ausdruck würde führen Sie beide Schritte der Validierung, überprüfung der Länge und überprüfen Sie den Inhalt. Der einfachste Weg, es zu benutzen wäre einfach zu ersetzen, die
if(!$phone || strlen($phone) < 8) {
Linie, wenn ich sehe, Sie haben bereits eine funktionierende Lösung. 🙂InformationsquelleAutor Jeremy
Dieser passt auf alle UK-Formate, die mit einer Vielzahl von Satzzeichen:
Extrahieren Sie die verschiedenen Teile mit diesem Muster
Land code wird in $1 (und ist null für die nationale format). Das NSN ist in $2. Die optionale Erweiterung ist in $3.
Entfernen Sie alle nicht-Ziffern von $2 für die weitere Verarbeitung. Der nächste Schritt ist, um sicherzustellen, dass die NSN ist in einem gültigen Bereich und eine gültige Länge (entweder 9 oder 10 Ziffern, je nach Angebot).
Die Liste der Muster ist zu lang, zu reproduzieren, hier aber ist verfügbar unter:
http://aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
InformationsquelleAutor g1smd
Könnte man Parsen die Eingabe in einen integer, dann überprüfen Sie für die richtige Anzahl von Ziffern;
Erklärt;
$mobileNumber = intval($mobileNumber);
Dies entfernt alle nicht numerischen Zeichen aus dem string, und führende null (z.B. Leerzeichen, Klammern, plus-Zeichen, Nachkommastellen usw.);
*if (preg_match('/(^\d{12}$)|(^\d{10}$)/',$mobileNumber)==TRUE) {*
Dieser reguläre Ausdruck überprüft, ob der string enthält entweder 12 oder 10 Ziffern mit dem 447712345678 (12 Ziffern) oder 7791234567 (10-stellig). Abgestimmt wird in zwei sub-Klauseln (^\d{12}$) oder (^\d{10}$) das Karat (^) und Dollarzeichen ($) stehen zu-match alles von Anfang (^) und Ende ($) des Strings. \d steht für eine Ziffer, und die folgenden {12} heißt match der vorherigen Erklärung, die Anzahl der Zeiten.
Bedeutet dies nicht, dass die Nummer gültig ist, könnten Sie eine API wie twillio, um eine zusätzliche Validierung der numebr https://www.twilio.com/help/faq/sms/does-twilio-check-to-see-if-phone-numbers-can-receive-sms
Beispielsweise;
Könnten Sie auch hinzufügen, eine überprüfung, um sicherzustellen, dass die Nummer beginnt mit entweder '07' oder '447', erforderlich für die UK Handys, wie diese;
den intval entfernt die führende null,also den regulären Ausdruck, der prüft, ob ein Lead-7 oder 447.
InformationsquelleAutor Matt