首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用PHP显示从MySQSL数据库获取的更多文本

如何使用PHP显示从MySQSL数据库获取的更多文本
EN

Stack Overflow用户
提问于 2021-01-02 18:59:12
回答 1查看 63关注 0票数 0

我有我的属性,其中也是描述(从DB获取),但由于它太长,我需要隐藏它的大部分,并再次显示它的“读更多”按钮。我知道硬编码文本的解决方案,但我不知道如何将其应用于获取的数据。

我在想这样的事情:

代码语言:javascript
复制
<p class="card-text"><?php 
        if(strlen($fetch['description']) > 50) {
          echo '<a href="#" class="read-more">Show More</a>';
        } else {
          // SOLUTION HERE
        }
?></p>

用于更改显示的jQuery -更多-显示更少:

代码语言:javascript
复制
$(document)
    .on('click','.read-more',function() { 
        $(this).removeClass('read-more').addClass('show-less').html('Show Less').prev('.description').removeClass('ellipsis'); 
    })

    .on('click','.show-less',function() { 
        $(this).removeClass('show-less').addClass('read-more').html('Read More').prev('.description').addClass('ellipsis'); 
    });
EN

回答 1

Stack Overflow用户

发布于 2021-01-03 10:07:31

很抱歉这么说,但我认为你的做法是错误的。

如果php代码只是将前50个字符输出到HTML页面,例如使用substr(),则HTML代码中的其余文本将不存在!因此,您的jquery将无法显示它(除非使用AJAX/Reload,否则会造成极大的过度消耗)。

您的解决方案应该是:获取所有文本,如果太长,只显示介绍文本,隐藏剩余文本,并通过JS/JQUERY显示剩余文本,如在文章如何在一定长度内隐藏/显示更多文本(如youtube)中所解释的那样

从上面的链接柱上拿出的小提琴正好显示了所期望的行为。

http://jsfiddle.net/zA23k/215/

因此,您的HTML输出应该类似于(修改后的代码)

代码语言:javascript
复制
    [...]Mary had a little lamb
    <span class="complete"> 
    Its fleece was white as snow And everywhere that Mary went</span>
    <span class="more">more...</span>
    [...]

因此,您的代码应该如下所示:

代码语言:javascript
复制
<p class="card-text"><?php
         $txt=$fetch['description'];
        if(strlen($txt) < 50) {
          echo $txt;
        } else {
            echo substr($txt,0,50)."<span class=\"complete\">". substr($txt,50)."</span>". "<span class=\"more\">more...</span>";
        }
?>

这个非常简单的substr()解决方案有一个缺点:如果位置50在一个单词内,这个单词将被肢解。

这可以用字包()或regexp修复。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65542942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档