【发布时间】:2017-06-17 17:47:54
【问题描述】:
我正在尝试使用类似于 Facebook 的 show more 行为的功能。
我希望它在以下情况下修剪字符串:
- 长度超过 200 个字符。
-
/n出现次数超过 5 次。
听起来很简单,而且我已经有了一个初始函数(仅按长度执行,我还没有实现 /n 的出现):
function contentShowMore($string, $max_length) {
if(mb_strlen($string, 'utf-8') <= $max_length) {
return $string; // return the original string if haven't passed $max_length
} else {
$teaser = mb_substr($string, 0, $max_length); // trim to max length
$dots = '<span class="show-more-dots"> ...</span>'; // add dots
$show_more_content = mb_substr($string, $max_length); // get the hidden content
$show_more_wrapper = '<span class="show-more-content">'.$show_more_content.'</span>'; // wrap it
return $teaser.$dots.$show_more_wrapper; // connect all together for usage on HTML.
}
}
问题是字符串可能包含 URL,因此会破坏它们。我需要找到一种方法来制作一个功能性的show-more 按钮,它可以检查长度、换行符并且不会剪切 URL。
谢谢!
示例:
输入:contentShowMore("hello there http://google.com/ good day!", 20)。
输出:
hello there http://g
<span class="show-more-dots"> ...</span>
<span class="show-more-content">oogle.com/ good day!</span>
我想要的输出:
hello there http://google.com/
<span class="show-more-dots"> ...</span>
<span class="show-more-content"> good day!</span>
【问题讨论】:
-
你能分享你的输入和预期输出吗?
-
没有特定的输入和输出,因为这个函数可以运行很多。但我可以举个例子。我会把它添加到我的问题中,等等
-
请问您将第二个参数传递为
20,以及您是如何获得它的,我会帮助您,为了更好地理解我只想了解您的问题。 -
是的,但正如您所见,它也削减了 URL。如果它不是 URL,我需要它来剪切字符串(如果是,则在 URL 之后剪切字符串)。谢谢!
标签: php html string substring trim