2010-06-19 49 views
5

Tôi muốn biến một chuỗi dài như reallyreallyreallyreallyreallylongfilename thành một cái gì đó như reallyreallyre...yreallyreally.Cắt giảm độ dài của chuỗi PHP và chèn một hình elip

Về cơ bản, tìm giữa chuỗi và thay thế mọi thứ ở đó cho đến khi độ dài của chuỗi là < 30 ký tự bao gồm dấu ba chấm để biểu thị các phần của chuỗi được thay thế.

Đây là mã của tôi, nơi tôi đã cố gắng này:

function cutString($input, $maxLen = 30) 
{ 
    if(strlen($input) < $maxLen) 
    { 
     return $input; 
    } 

    $midPoint = floor(strlen($input)/2); 
    $startPoint = $midPoint - 1; 

    return substr_replace($input, '...', $startPoint, 3); 
} 

Nó tìm thấy trung tâm của chuỗi và thay thế một nhân vật hai bên với . nhưng vấn đề là tôi không thể làm việc ra làm thế nào để làm cho nó cắt giảm xuống còn 30 ký tự hoặc bất kỳ số nào là $maxLen.

Hy vọng bạn hiểu câu hỏi của mình, tôi không nghĩ mình đã làm tốt công việc giải thích nó 8)

Cảm ơn.

Trả lời

8

Làm thế nào về:

if (strlen($input) > $maxLen) { 
    $characters = floor($maxLen/2); 
    return substr($input, 0, $characters) . '...' . substr($input, -1 * $characters); 
} 
+0

Đó chỉ thêm một '...' vào phía trước của chuỗi, vì vậy sản lượng là '... reallyreallyreallyreallyreally'. –

+2

Er, nó nên đặt '...' ở giữa chuỗi James, có hai hàm substr ở đó. – Amber

+0

Tôi biết có. Nhưng nếu tôi đặt mã đó trong hàm 'cutString' của nó, nó sẽ trả về một chuỗi có dấu ba chấm ở phía trước của chuỗi. –

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