2011-10-29 8 views
6

Używam tego mało funkcji obciąć ciągi, gdy są potrzebne:Jak obciąć e-mail, aby część lokalna „abc ... @ gmail.com”

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

chciałbym jakąś pomoc, aby utworzyć nową funkcję do obcinania lokalnych adresów e-mail podobnych do tych, które są wykonywane w Grupach dyskusyjnych Google.

[email protected] 

Byłoby to szczególnie przydatne dla użytkowników korzystających z e-mailowego adresu e-mail Facebooka.

[email protected] 

Chyba ta nowa funkcja będzie używać regex znaleźć @ a następnie obciąć część lokalna do pewnej liczby znaków, aby wygenerować coś podobnego

[email protected] 

Wszelkie sugestie, jak uporać się z tym?

Dzięki!

Odpowiedz

11

Ta funkcja skróci pierwszą część wiadomości e-mail (jeśli @ zostanie znaleziony) i inny ciąg znaków, jeśli @ nie zostanie znaleziony.

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('[email protected]', 10); 
// will output : [email protected] 

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

ładne ... jak "eksplodować" zamiast użycia wyrażenia regularnego - pozwól mi wypróbować to - thx dla danych wejściowych – pepe