2010-03-30 3 views
2

Мне нужно скрыть номера телефонов и другую контактную информацию в пользовательском контенте, чтобы сделать возможным онлайн-сервис. Ввод представляет собой рекламные объявления с произвольными объявлениями, поэтому я хотел бы заменить все, что похоже на номер телефона (например, строка из 3 или более номеров) с (скрытый номер телефона), а также, возможно, удалить некоторые экзотические обозначения электронной почты адреса.Редактирование телефонных номеров

Каков наилучший способ для этого?

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

какой стране? Или вы просто хотите соответствовать ЛЮБОЙ возможный номер телефона? –

+0

Это зависит от того, каким будет пользовательский контент. Например. '140370' может быть моим днем ​​рождения (я просто забыл точки), или это номер телефона или, может быть, количество того, что я достиг? –

+1

Какая ужасная идея. –

ответ

2

В Python для замены трех или более цифр с тремя точками в строке s:

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

«Экзотические нотаций адресов электронной почты» трудно для меня, чтобы разобрать; может быть, вы имеете в виду s/вещь, как

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

Спасибо, короткий и сладкий, теперь просто что-то, что приятно скроет неряшливые веб-адреса. Голодный, но умный –

0

Вы можете создать простую функцию, которая просто заменяет любой алфавитно-цифровой символ с «» или любого другого персонажа, которого вы хотите.

Например:

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

Я думаю, проблема в том, чтобы на самом деле ** найти ** эту часть в представленном пользователем контенте. Каждый текст состоит из буквенно-цифровых символов. –

1

По веб-адресов, я предполагаю, что вы имеете в виду URL. Вы можете создать массив, содержащий все возможные домены (".ca",".com",".uk"....). Затем вы можете запустить замену регулярного выражения на любом «слове», содержащем один из доменов.

Чтобы сделать замену, вы можете использовать код Алека Мартелли и вместо того, чтобы поместить «@» в свою замену, поместите объединение массива доменов. Функция соединения объясняется на сайте this.

Если в Perl я хотел бы сделать матч, как:

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

Yup, только что мне нужно было скрыть эти «веб-адреса». –

Смежные вопросы