修剪标题到最近的单词

比方说,我有以下代码:

My very long title

Another long title

如果我想用PHP或jQuery缩短这些标题,我怎样才能将它们修剪成最接近的单词并附加省略号? 是否可以指定字符数?

 

My very long...

Another long...

编辑 – 如何为每个标题执行此操作? 我真的不知道如何将每个标题传递给字符串……

谢谢

在PHP中创建省略号

  

然后可以通过以下方式使用此function:

  

jquery Auto Ellipsis

使用PHP函数很容易。 看看这个例子:

 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; } 

然后,您可以使用以下函数传入文本:

trim_text('我的超长标题',10);

(我没有对此进行测试,但它应该可以正常工作。)

也许你正在寻找wordwrap() 。

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

使用$ break来使用可选的break参数来中断该行。 如果剪切设置为TRUE,则字符串始终在指定宽度处或之前包装。 因此,如果您有一个大于给定宽度的单词,它就会分开。

有关更多示例,请查看php网站上的function文档。

+++

另一个解决方案是使用explode()将标题分割为' ' (空格)并提供最多5个字的限制,而不是使用array_pop切断数组的最后一个元素,最后使用' '连接implode() ' '那个空间)作为胶水。 但是这个解决方案不是最好的,因为如果你有长话,它会给你带来难看的输出。

如果你想在特定的长度内,这将是有效的。

 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); 

经过测试,效果很好。

编辑:变成function。

看到这个问题 :

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

编辑:(包括<= $ limit check)

  

使用一些PHP和强大的正则表达式

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

使用正则表达式和jquery在javascript中应该可以使用相同的方法。

Jquery也有省略号插件,你可能想看看它。