修剪标题到最近的单词
比方说,我有以下代码:
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也有省略号插件,你可能想看看它。