Как обрезать локальную часть электронной почты до 'abc ... @ gmail.com' - PullRequest
6 голосов
/ 29 октября 2011

Я использую эту маленькую функцию для усечения строк, когда это необходимо:

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 Ответ

11 голосов
/ 29 октября 2011

Эта функция усекает первую часть письма (если @ найден) и другую строку, если @ не найден.

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...
...