2010-03-30 7 views
2

Je dois masquer les numéros de téléphone et autres coordonnées dans le contenu généré par l'utilisateur pour rendre possible un service d'introduction en ligne. L'entrée est aléatoire annonces de style annonces, donc je chercherais à remplacer tout ce qui ressemble à un numéro de téléphone (par exemple: chaîne de 3 numéros ou plus) avec (numéro de téléphone caché), et peut-être supprimer des notations exotiques de courrier électronique adresses.Rédaction des numéros de téléphone

Quelle est la meilleure façon de faire cela?

def redact_contact_details(s): 
    # redact phone numbers 
    ... 
    # redact e-mail addresses 
    ... 
    # redact web addresses 
    ... 
+0

De quel pays? Ou voulez-vous simplement faire correspondre N'IMPORTE QUEL numéro de téléphone possible? –

+0

Cela dépend beaucoup de ce que sera le contenu de l'utilisateur. Par exemple. '140370' pourrait être mon anniversaire (j'oublie juste les points) ou est-ce un numéro de téléphone ou peut-être le nombre de tout ce que j'ai accompli? –

+1

Quelle idée terrible. –

Répondre

2

En Python, pour remplacer trois ou plusieurs chiffres avec trois points dans la chaîne s:

import re 
s = re.sub(r'\d{3,}', '...', s) 

"notations exotiques d'adresses e-mail" est difficile pour moi d'analyser; peut-être vous dire s/chose comme

s = re.sub(r'[\w.][email protected][\w.]+', '<email redacted>', s) 
+0

Merci, court et doux, maintenant juste quelque chose qui va bien cacher les adresses Web humaines bâclées. Hungry, mais intelligent –

0

Vous pouvez créer une fonction simple qui remplace simplement un caractère alphanumérique avec un « » ou tout autre personnage que vous voulez.

Par exemple:

function HideInput($input) { 
    $input = preg_replace("([a-zA-Z0-9])", "*", $input); 
    return $input; 
} 
+0

Je pense que le problème est de réellement ** trouver ** cette partie dans le contenu soumis par l'utilisateur. Chaque texte est composé de caractères alphanumériques. –

1

par des adresses web Je devine que vous voulez dire les URL. Vous pouvez créer un tableau contenant tous les domaines possibles (".ca",".com",".uk"....). Vous pouvez ensuite exécuter un regex replace sur n'importe quel 'mot' qui contient l'un des domaines.

Pour faire le remplacement, vous pouvez utiliser le code de Alec Martelli et au lieu de mettre le '@' dans votre remplacement mettre la jointure de la matrice de domaines. La fonction de jointure est expliquée sur le site this.

Si en perl je ferais le match comme:

my $domainsString = join("|", @arrayOfPossibleDomains); 
$s =~ s/\w+[$domainString]\w+/......./g; 
+0

Yup, juste ce dont j'avais besoin pour cacher ces "adresses web". –

Questions connexes