有没有办法限制php中的文本,然后添加扩展/折叠选项?
例如:
我有一个500个字符长的注释,如果我设置了文本限制($notetlimit=100;),我将获得100个字符,之后,我想插入图像(圆圈、箭头等),单击时将显示其余文本,然后更改为另一个图像(例如向上箭头),单击后再次关闭其余文本。有点像分页符。
这可能吗?或者我必须使用js来展开和折叠吗?
您可以使用此函数来限制文本。。。
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 长度的文本
现在,要像googleplus一样展开或折叠文本,我们可以使用truncate.js文件。
您可以在纯PHP(文本扩展需要重新加载页面,而不是SEO友好型)、纯JS(例如使用jQuery Expander)中执行此操作,也可以混合使用两者:在PHP中创建HTML标记,并使用JS在扩展版本和折叠版本之间切换。
大多数人认为,在纯JS中执行而不更改HTML标记是最新的方法(Unobtrusive JavaScript),但每种解决方案都有争议。
是的,这是可能的。你可以生成一个类似的链接
<a href='...?offset=100'><img src='...arrow.png'/></a>
如果您的文本比$notelimit
长。然后,如果点击链接,则检查$_GET["offset"]
,并用显示该偏移的钞票
substr($notetext, $offset);
请参阅http://php.net/manual/en/function.substr.php了解更多信息!
函数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。。。
您可以执行类似的操作
$note = "some note goes here";
$noteLimit = 100;
if(strlen($note) > $noteLimit)
{
RenderCollapsedNote($note);
}
else
{
RenderFullNote($note);
}
现在,函数RenderCollapsedNote和RenderFullNote为您的笔记生成容器。通过页面上的文本输入实时执行此操作需要使用javascript/ajax将注释(在按键上)发布回来,并根据响应更新页面。然而,我强烈建议使用仅使用javascript的方法,因为它将比这更高效。