2009-03-16 5 views
3

Je fais du développement web avec Perl. Je dois faire la validation du numéro de téléphone pour tous les pays. Y at-il un module Perl open source qui peut faire ce qui suit? Par exemple: pays = Malaisie, si l'utilisateur a entré le numéro de téléphone = +60127008007, après validation, il retourne ceci est un numéro de mobile valide en Malaisie, où: En Malaisie locale, nous appelons directement: 0127008007. "+6" est le code international. En revanche, si le numéro de téléphone d'entrée de l'utilisateur est +600127008007, il est renvoyé comme numéro de téléphone invalide. Parce que localement en Malaisie, il n'y a pas un tel nombre comme: 00127008007.Existe-t-il un validateur de numéros de téléphone pour tous les pays pour Perl?

Tout module libre que peut le faire, dans CPAN ou autrement?

+0

Gardez ces deux éléments à l'esprit si vous cherchez quelque chose dans le CPAN: http://search.cpan.org/ http://kobesearch.cpan.org/ – Telemachus

Répondre

1

Il est pratiquement impossible de tenir à jour une liste de codes régionaux valides et de longueurs de numéros pour chaque pays.

Je vous suggère de vérifier cela:

  1. Un code d'appel international (1 à 3 chiffres)
  2. Un indicatif régional (généralement 3 chiffres, mais varie de 1 à 5 chiffres)
  3. A numéro de téléphone (habituellement de 6 à 8 chiffres, mais de 4 à 13 chiffres)

Vous avez donc entre 6 et 21 chiffres, avec des remerciements spéciaux pour l'Autriche. =)

Cela étant dit, vous ne pouvez jamais être sûr qu'un numéro de téléphone est valide sauf si vous appelez le numéro. Des personnes ayant un problème de validation (par exemple, en entrant un numéro public valide qui ne leur appartient pas), vous devriez vous demander: "est-ce vraiment nécessaire?"

+0

Voté sauvegarder; le -1 semblait injuste, étant donné que le poste est correct. Qu'est-ce qu'un numéro de téléphone "valide" dépend du pays, et en particulier dans les pays en développement, les formats ont changé relativement fréquemment. – Andy

-2

Je ne connais pas Perl, mais c'est un bon exemple pour utiliser Regexp.

Mais de toute façon vous en aurez besoin pour chaque pays, et évidemment, cela ne peut inclure aucun pays dans le monde mais vous pouvez trouver phone patterns here.

9

Jetez un coup d'œil à Number :: Phone :: NANP (lNumber::Phone::NANP). Je suppose que vous allez ajouter de nouvelles sous-classes pour les pays non couverts.

8

La validation suppose que vous en savez plus que la personne qui entre les données, mais dans ce cas vous ne le savez pas. Disons que je suis un Américain travaillant un contrat à long terme au Canada. J'ai gardé mon téléphone portable parce que l'entreprise pour laquelle je travaille paie les frais d'itinérance. Lorsque je visite votre site et que vous entrez mon numéro de téléphone cellulaire américain et votre adresse au Canada, votre script de validation le déclare invalide alors que ce n'est pas le cas. Cela conduit à la confusion et la colère du client. Si un numéro de téléphone valide (ou un courriel d'ailleurs) est une exigence absolue pour votre entreprise, vous devez appeler (ou envoyer un courriel) la personne au numéro (ou adresse courriel) et leur demander d'entrer le code que vous leur donnez. Il y a hardware/software conçu pour appeler automatiquement des numéros et fournir un message au destinataire. Vous pouvez utiliser un logiciel de synthèse vocale comme Festival pour lire une touche spéciale sur le téléphone, puis demandez-leur de le saisir sur votre site Web pour confirmer qu'ils ont accès à ce téléphone. Même si ce n'est pas infaillible, car je pourrais acheter un téléphone portable jeter ou créer une adresse e-mail jeter.

3

Le but de la validation est d'aider l'utilisateur en détectant les erreurs d'entrée pour les forcer à utiliser un format spécifique pendant l'entrée.

Il y a un point où la validation cesse d'être utile à l'utilisateur. Habituellement, c'est aussi le point où les exceptions aux règles de validation deviennent trop difficiles à gérer pour le programmeur, puisqu'il est entré dans le pays des rendements décroissants.

Pourquoi avez-vous besoin d'un numéro de téléphone validé? Êtes-vous sûr que l'utilisateur n'essaiera pas d'entrer deux numéros dans le même champ et abandonnera de frustration? Etes-vous sûr que l'utilisateur ne va pas entrer quelque chose comme "555-5555 (demander Steve)" ou "555-5555 (extension 123)" ou une autre entrée totalement valide? Êtes-vous sûr d'être assez intelligent pour prédire que chaque utilisateur d'entrée devra entrer dans ce champ?

N'essayez pas de déjouer votre utilisateur. Aide le. :)

0

Quelqu'un allait porter libphonenumber à Perl, mais ce n'est pas encore arrivé.

Il existe déjà un port complet pour JavaScript.

Il existe des ports incomplets vers Ruby, PHP et Python jusqu'à présent. Un port C++ est attendu dans les mois.

Gardez un oeil sur: http://code.google.com/p/libphonenumber/ pour les autres comme ils sont annoncés.

0

Pour développer sur Chas. et points de Domchi: Il y a deux raisons pour valider un numéro de téléphone:

  1. Pour aider l'utilisateur à saisir correctement son/son numéro (souvent lorsque l'utilisateur veut que d'avoir leur numéro)
  2. Pour empêcher l'utilisateur de procéder sans entrer un numéro valide (souvent lorsque l'utilisateur préférerait ne pas vous le donner)

Si votre cas est le cas n ° 1 simple validation est tout ce dont vous avez besoin, puisque vous ne voulez pas éviter un cas marginal corriger l'entrée et frustrer votre utilisateur, vous voulez simplement les aider à entrer incorrectement leur numéro.

Si votre cas est le cas n ° 2, aucune validation n'empêchera un utilisateur d'entrer un nombre valide qui ne lui appartient pas. Pour ce faire, vous devez effectuer un rappel automatisé avec un code de validation, auquel cas vous êtes maintenant plus dans le cas n ° 1, car ils devront fournir un nombre correct pour obtenir le code de validation. Ce sera BEAUCOUP plus de travail si.

En fin de compte, vous avez seulement besoin de couvrir le cas n ° 1, aider l'utilisateur à entrer un nombre correct. Ne pas frustrer un utilisateur potentiel, juste en raison de la validation du numéro de téléphone.

Questions connexes