如何将电子邮件本地部分截断为'abc ... @ gmail.com'

时间:2011-10-29 03:13:09

标签: php regex email truncate

我使用这个小函数在需要时截断字符串:

function truncate_text($text, $nbrChar = 55, $append='...') {
    if (strlen($text) > $nbrChar) {
        $text = substr($text, 0, $nbrChar);
        $text .= $append;
    } 
    return $text;
}

我想帮助创建一个新功能来截断电子邮件本地部分,类似于Google网上论坛中的内容。

abc...@gmail.com

这对使用Facebook代理电子邮件的用户特别有用。

apps+2189712.12457.7b00f3c9e8bfabbeea8f73@proxymail.facebook.com

我想这个新函数会使用正则表达式来查找@,然后将本地部分截断为一定数量的字符以生成类似

的内容
apps+21...@proxymail.facebook.com

有任何建议如何解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:11)

此功能将截断电子邮件的第一部分(如果找到@),如果找不到@则截断其他字符串。

function truncate_text($text, $nbrChar = 55, $append='...') {
  if(strpos($text, '@') !== FALSE) {
    $elem = explode('@', $text);
    $elem[0] = substr($elem[0], 0, $nbrChar) . $append;
    return $elem[0] . '@' . $elem[1];
  }
  if (strlen($text) > $nbrChar) {
    $text = substr($text, 0, $nbrChar);
    $text .= $append;
  } 
  return $text;
}

echo truncate_text('apps+2189712.12457.7b00f3c9e8bfabbeea8f73@proxymail.facebook.com', 10);
// will output : apps+21897...@proxymail.facebook.com

echo truncate_text('apps+2189712.12457.7b00f3c9e8bfabbeea8f73proxymail.facebook.com', 10);
// will output : apps+21897...