有没有办法限制php中的文本,之后添加展开/折叠选项?
例如:
我有一个长度为500个字符的注释,如果我设置了文本限制($ notetlimit = 100;),我会得到100个字符,之后,我想插入图像(圆圈,箭头等),这将是在单击时显示其余文本并更改为另一个图像(例如向上箭头),然后在单击时再次关闭文本的其余部分。有点像分页。
这可能吗?还是我必须使用js进行展开和折叠?
答案 0 :(得分:2)
你可以用普通的PHP(文本扩展所需的页面重新加载,而不是SEO友好),普通的JS(例如jQuery Expander)或者你可以使用两者的混合:在下面创建HTML标记PHP并使用JS在扩展和折叠版本之间切换。
在普通JS中执行它而不更改HTML标记将被大多数人认为是最新的方法(Unobtrusive JavaScript) - 但是每个解决方案都有参数。
答案 1 :(得分:2)
您可以使用此功能限制文字...
function gen_string($string,$min=1000,$clean=true) {
$text = trim(strip_tags($string));
if(strlen($text)>$min) {
$blank = strpos($text,' ');
if($blank) {
# limit plus last word
$extra = strpos(substr($text,$min),' ');
$max = $min+$extra;
$r = substr($text,0,$max);
} else {
# if there are no spaces
$r = substr($text,0,$min).'.........';
}
} else {
# if original length is lower than limit
$r = $text;
}
return $r ;
}
其中$ string是您将限制为$ min = 1000
长度的文本现在要像google plus一样展开或折叠文字,我们可以使用 truncate.js 文件。
答案 2 :(得分:0)
function myTrace($ string,$ initialVal,$ strPad)
{
$lengh = strlen($string);
if($lengh>$initialVal){
$tracedString = substr($string,0, $initialVal).$strPad;
}else{
$tracedString = $string;
}
return ucfirst($tracedString);
}
$ text =“Helloworld”;
$ result = myTrace($ text,5,'...');
echo $ result; //输出是hello ...
答案 3 :(得分:0)
你会做类似
的事情$note = "some note goes here";
$noteLimit = 100;
if(strlen($note) > $noteLimit)
{
RenderCollapsedNote($note);
}
else
{
RenderFullNote($note);
}
现在函数RenderCollapsedNote和RenderFullNote为您的笔记生成容器。通过页面上的文本输入实时执行此操作需要您使用javascript / ajax将注释发回(在按键上)并根据响应更新页面。但是我强烈建议使用仅限javascript的方法,因为它会比这更有效。