2010-12-15 35 views
6

Nói ví dụ tôi có đoạn mã sau:tít Trim để Từ gần nhất

<h3>My very long title</h3> 
<h3>Another long title</h3> 

Nếu tôi muốn rút ngắn những tiêu đề sử dụng PHP hoặc jQuery, làm thế nào tôi có thể cắt chúng đến từ gần nhất và thêm một dấu chấm lửng? Có thể chỉ định số ký tự không?

<h3>My very long...</h3> 
<h3>Another long...</h3> 

Sửa - Làm thế nào tôi có thể làm điều này cho mỗi một trong các tiêu đề? Tôi không thực sự có một ý tưởng như thế nào để vượt qua mỗi tiêu đề thành một chuỗi ...

Cảm ơn

+2

Tôi cười vào khả năng cạnh tranh để trả lời câu hỏi này. – thirtydot

+0

@thirdydot: Điều đó xảy ra với những thứ dễ dàng này. – Jonah

+0

@thirtydot, đây là trang web nơi chúng tôi có thể nhận được câu trả lời trong vài giây – kobe

Trả lời

5

Creating an ellipsis in PHP

<?php 
function ellipsis($text, $max=100, $append='&hellip;') 
{ 
    if (strlen($text) <= $max) return $text; 
    $out = substr($text,0,$max); 
    if (strpos($text,' ') === FALSE) return $out.$append; 
    return preg_replace('/\w+$/','',$out).$append; 
} 
?> 

Chức năng này sau đó có thể được sử dụng theo cách sau:

<?php 
$text = "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo."; 
echo ellipsis($text,100); 
?> 

jquery Auto Ellipsis

+0

Không liên kết nào trong số này hoạt động thêm –

1

Xem question này:

function wrap($string, $limit) { 
    $wstring = explode("\n", wordwrap($string, $limit, "\n")); 
    return $wstring[0] . '...'; 
} 

Edit: (bao gồm < = $ séc hạn)

<?php 
function wrap($string, $limit) { 
    if (strlen($string) <= $limit) { 
     return $string; 
    } 
    $wstring = explode("\n", wordwrap($string, $limit, "\n")); 
    return $wstring[0] . '...'; 
} 
?> 
<h3><?php echo wrap('My very long title', 12); ?></h3> 
1

Có lẽ bạn đang tìm kiếm wordwrap().

string wordwrap (string $str [, int $width = 75 [, string $break = "\n" [, bool $cut = false ]]]) 

Sử dụng $ ngắt để ngắt dòng bằng tham số ngắt tùy chọn. Nếu cắt được đặt thành TRUE, chuỗi luôn luôn được bao bọc tại hoặc trước chiều rộng được chỉ định. Vì vậy, nếu bạn có một từ đó là lớn hơn chiều rộng nhất định, nó bị vỡ.

Kiểm tra tài liệu chức năng trên trang web của php để biết thêm ví dụ.

+++

Một giải pháp khác sẽ được chia danh hiệu bởi ' ' (một không gian) sử dụng explode() và cung cấp một giới hạn để nói tối đa 5 từ, hơn cắt đứt các yếu tố cuối cùng của mảng bằng array_pop và cuối cùng tham gia với họ với implode() sử dụng ' ' (không gian đó) làm keo. Nhưng giải pháp này không phải là tốt nhất vì nó sẽ cho bạn đầu ra xấu xí nếu bạn có từ dài.

+0

chỉ là một nhận xét mà OP không muốn cắt bớt một nửa. * từ gần nhất * – RageZ

+0

Nó nói "Nếu cắt được đặt TRUE", vì vậy anh ta chỉ cần đặt sai. – s3v3n

1

Nếu bạn muốn ở trong một độ dài cụ thể, thao tác này sẽ hoạt động.

function truncateString($string, $length, $append = '...') { 
    $length -= strlen($append); // length of "..." 

    $string = substr($string, 0, $length); 
    $string = substr($string, 0, strrpos($string, ' ')); 
    $string .= $append; 

    return $string; 
} 
echo truncateString('My very long title', 15); 

Đã kiểm tra, hoạt động hoàn hảo.

Chỉnh sửa: được chuyển thành chức năng.

9

Điều này dễ sử dụng chức năng PHP.Nhìn vào ví dụ này:

function trim_text($input, $length) { 

    // If the text is already shorter than the max length, then just return unedited text. 
    if (strlen($input) <= $length) { 
     return $input; 
    } 

    // Find the last space (between words we're assuming) after the max length. 
    $last_space = strrpos(substr($input, 0, $length), ' '); 
    // Trim 
    $trimmed_text = substr($input, 0, $last_space); 
    // Add ellipsis. 
    $trimmed_text .= '...'; 

    return $trimmed_text; 
} 

Sau đó bạn có thể vượt qua trong văn bản với một chức năng như:

trim_text ('My danh hiệu siêu dài', 10);

(tôi đã không kiểm tra này, nhưng nó sẽ làm việc một cách hoàn hảo.)

+0

+1 để bắt nếu theo chiều dài. – Jonah

0

sử dụng một số php và biểu thức chính quy hùng mạnh

function formatHeadline($headline){ 
    if(preg_match('/(\w+\s+){3}/', $subject, $match)){ 
     return $match[1] . '...'; 
    } 
    return $headline; 
} 

Cùng một phương pháp nên có thể trong javascript sử dụng regex và jquery.

Jquery cũng có plugin ellipsis, bạn có thể muốn xem xét nó.

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