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

时间:2012-02-01 12:03:30

标签: php javascript html

有没有办法限制php中的文本,之后添加展开/折叠选项?

例如:

我有一个长度为500个字符的注释,如果我设置了文本限制($ notetlimit = 100;),我会得到100个字符,之后,我想插入图像(圆圈,箭头等),这将是在单击时显示其余文本并更改为另一个图像(例如向上箭头),然后在单击时再次关闭文本的其余部分。有点像分页。

这可能吗?还是我必须使用js进行展开和折叠?

4 个答案:

答案 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的方法,因为它会比这更有效。