サブ文字列を使用してこれを行うための読みやすい方法は次のとおりです。
$emails = array(
'verysecretemail@gmail.com',
'example@example.org',
'someotheremail@example.com',
);
function obfuscate_email($email) {
$at_position = strpos($email, '@');
$chop = rand(1, $at_position - 1);
$mask = str_repeat('*', rand(4, 8));
$partial_address = substr($email, 0, $chop);
$domain = substr($email, $at_position);
return $partial_address . $mask . $domain;
}
foreach($emails as $email) {
var_dump(obfuscate_email($email));
}
// Output:
// string(18) "ver*****@gmail.com"
// string(24) "exam********@example.org"
// string(17) "s****@example.com"
実行例はhttp://ideone.com/21HKdで見つけることができます
ご覧のとおり、コードを関数に分解して、使いやすくしました。この関数は、難読化された電子メールアドレスを次のように提供します。
- 元のアドレスのランダムチョップ(その長さを考慮)
- アスタリスクのランダムマスク
この機能を実際に自分で実装する場合は、難読化しようとしているメールアドレスの長さが3文字を超えて$chop
いることを確認し、可能な限り非表示にできるように長さを適切に調整します。