• 11-03-2022, 19:17:58
    #1
    başlıktaki gibi nasıl sansür yapabilirim?

    üyenin referanslarının epostasının tamamını görmesini istemiyorum
  • 11-03-2022, 19:21:26
    #2
    function obfuscate_email($email)
    {
    $em = explode("@",$email);
    $name = implode('@', array_slice($em, 0, count($em)-1));
    $len = floor(strlen($name)/2);
    
    return substr($name,0, $len) . str_repeat('*', $len) . "@" . end($em);
    }
    
    // to see in action:
    $emails = ['"Abc@def"@iana.org', 'abcdlkjlkjk@hotmail.com'];
    
    foreach ($emails as $email)
    {
    echo obfuscate_email($email) . "n";
    }
  • 11-03-2022, 19:22:43
    #3
    Kişisel Rütbe
    <?php
        /*     Here's the logic:     We want to show X numbers.    If length of STR is less than X, hide all.    Else replace the rest with *.     */
    
    function mask($str, $first, $last) {    $len = strlen($str);    $toShow = $first + $last;    return substr($str, 0, $len <= $toShow ? 0 : $first).str_repeat("*", $len - ($len <= $toShow ? 0 : $toShow)).substr($str, $len - $last, $len <= $toShow ? 0 : $last);
    }
    
    function mask_email($email) {    $mail_parts = explode("@", $email);    $domain_parts = explode('.', $mail_parts[1]);
        $mail_parts[0] = mask($mail_parts[0], 2, 1); // show first 2 letters and last 1 letter    $domain_parts[0] = mask($domain_parts[0], 2, 1); // same here    $mail_parts[1] = implode('.', $domain_parts);
        return implode("@", $mail_parts);
    }
    
    $emails = array(    'a@a.com',    'ab@aa.com',    'abc@aaa.com',    'abcd@aaaa.com',    'abcde@aaaaa.com',    'abcdef@aaaaaa.com',    'abcdefg@aaaaaaa.com',    'abcdefgh@aaaaaaaa.com',    'abcdefghi@aaaaaaaaa.com'
    );
    
    foreach ($emails as $email){    echo '<b>'.$email.'</b><br>'.mask_email($email).'<br><hr>';
    }