带有展开和折叠选项的PHP文本限制


PHP text limit with expand and collapse option

有没有办法限制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的方法,因为它将比这更高效。