2011-10-29 23 views
6

tôi sử dụng chức năng này ít để cắt dây khi cần thiết:Làm thế nào để cắt một địa phương phần email để 'abc ... @ gmail.com'

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

Tôi muốn một số giúp đỡ để tạo ra một chức năng mới để cắt ngắn các phần địa phương email tương tự với những gì được thực hiện trong Google Groups.

[email protected] 

Điều này đặc biệt hữu ích cho người dùng sử dụng email proxy của Facebook.

[email protected] 

Tôi đoán chức năng mới này sẽ sử dụng regex để tìm ra @ và sau đó cắt các địa phương phần để một số lượng nhất định của nhân vật để tạo ra một cái gì đó giống như

[email protected] 

Bất kỳ lời đề nghị làm thế nào để giải quyết vấn đề này?

Cảm ơn!

Trả lời

11

Chức năng này sẽ cắt bớt phần đầu tiên của email (nếu tìm thấy @) và chuỗi khác nếu không tìm thấy @.

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

tốt ... giống như 'phát nổ' thay vì sử dụng regex - hãy để tôi thử điều này - thx cho đầu vào – pepe

Các vấn đề liên quan