Автоматическое удаление контактной информации из документов
-
29-09-2019 - |
Вопрос
Кто-нибудь знает о хорошем решении, которое можно использовать с php, которое эффективно удалит контактную информацию, такую как номера телефонов, адреса электронной почты и, возможно, даже контактные адреса, из документа?
Обновить
Эй, ребята, вот что я придумал на данный момент, это работает довольно хорошо.
function sanitizeContent($content)
{
// emails - even containing white space characters like this 't e s t @ ba d . co m'
$content = preg_replace('/([A-Za-x-0-9\s\_\.]{1,50})(?=@)@([A-Za-x-0-9\s\_\.]{1,50})/', '[email removed]', $content);
// urls
$content = preg_replace('/[a-zA-Z]*[:\/\/]*[A-Za-z0-9\-_]+\.+[A-Za-z0-9\.\/%&=\?\-_]+/i', '[link removed]', $content);
// phone numbers
$content = preg_replace('/(\d)?(\s|-|.|\/)?(\()?(\d){3}(\))?(\s|-|.|\/){1}(\d){3}(\s|-|.|\/){1}(\d){4}/', '[phone removed]', $content);
$content = preg_replace('/[0-9\.\-\s\,\/(x|ext)]{5,50}/', '[phone removed]', $content);
// addresses????
return $content;
}
У кого-нибудь есть какие-нибудь идеи по адресам, я думаю, может быть, придумать способ определить город, почтовый индекс штата, а затем также удалить x символов перед этим.Это может привести к случайному удалению некоторых данных, но это может быть лучше, чем разглашение.Мне было бы действительно интересно услышать, сталкивался ли с этим кто-нибудь еще.
Решение
Используйте регулярное выражение.
Вы можете использовать preg_replace для этого.
$pattern = "/[a-zA-Z]*[:\/\/]*[A-Za-z0-9\-_]+\.+[A-Za-z0-9\.\/%&=\?\-_]+/i";
$replacement = "[removed]";
preg_replace($pattern, $replacement, $string);
для электронных писем:
$pattern = "/[^@\s]*@[^@\s]*\.[^@\s]*/";
$replacement = "[removed]";
preg_replace($pattern, $replacement, $string);
для URL-адресов: