首页 文章

新闻项目阅读更多按钮

提问于
浏览
1

我正在为一个网站制作新闻报道 . 我想如果一条新闻消息超过64个单词,它会显示一个更多的阅读按钮 . 如果它只有64个单词,那么只显示消息 . 现在我已经有了阅读更多按钮的部分,但我不能得到的部分,如果它有少于64个单词,阅读更多按钮消失 . 因此,无论是少于还是多于64个单词,都可以看到更多按钮 .

这是一段代码

<?php
$query="SELECT * FROM seo_nieuws ORDER BY id DESC LIMIT 1";
$stmt = $pdo->query($query);
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

foreach ($result as $row) {
?>
<h4><?php echo $row['titel']; ?></h4> 

<?php
}
?>  
<?php
function limit_words($string, $word_limit){
$words = explode(" ",$string);
return implode(" ",array_splice($words,0,$word_limit));
}
$start = limit_words($row['bericht'],64);                       
?>

<div class="nieuws-tekst"><?php echo $start; ?><?= '...' ?></div>
    <a class="button" href="http://www.linkofwebsite.nl/laatste-nieuws/nieuwsbericht.php?id=<?php echo $row['id']; ?>">Lees meer</a>

更新:

<?php
function limit_words($string, $word_limit){
$limitReached = FALSE;
$words = explode(" ",$string);
$content = implode(" ",array_splice($words,0,$word_limit));
if (count($words) >= $word_limit) {
$limitReached = TRUE;
}

return array($limitReached, $content);
}
list($limitReached, $content) = limit_words($row['bericht'],64);
?>

<div class="nieuws-tekst">
<?= $content; ?>
<?php if ($limitReached): ?>
... <a class="button" href="http://www.linkofwebsite.nl/laatste-nieuws/nieuwsbericht.php?id=<?= $row['id']; ?>">Lees meer</a>
<?php endif ?>
</div>

这就是我在反应后得到的 . 但内容显示但读取更多按钮没有 .

Output after var_dump($row['bericht]);

string(817)“Lorem ipsum dolor sit amet,consectetur adipiscing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.Duis aute irure dolor在申请中,申请人,旅行社,旅行社,民间旅行社,民间旅行社,民间旅行社,民间旅行社,民间旅行社,民间旅行社,民间旅行社,民兵旅游协会Duis aute irure dolor in repreptderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur . Excepteur sint occaecat cupidatat non proident,sunt in culpa qui officia deserunt mollit anim id est laborum . xercitation ullamco laboris nisi ut aliquip ex ea“

Lorem ipsum dolor sit amet,consectetur adipiscing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua . Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat . Duis aute irure dolor in repreptderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur . Excepteur sint occaecat cupidatat non proident,sunt in culpa qui officia deserunt

4 回答

  • 1

    正如jitendrapurohit已经说过,你可以更新你的功能来计算单词 .

    如果 $string 是html,你必须确保你的函数正确处理 . 否则你可能会得到无效的HTML .

    例如

    $string = '<div>some long text</div>';
    

    然后当你在64个单词后截断它时 div 将不会被关闭 .

    这是@ jitendrapurohit函数的更新版本,它还将从字符串中删除html .

    <?php
    
    function limit_words($string, $word_limit)
    {
        $limitReached = false;
        $words = explode(' ', $string);
        if (count($words) >= $word_limit) {
            $limitReached = true;
        }
    
        $content = implode(' ', array_splice($words, 0, $word_limit));
    
        return [$limitReached, $content];
    }
    
    list($limitReached, $content) = limit_words($row['bericht'], 64);
    
    ?>
    
    <div class="nieuws-tekst">
        <?= $content; ?>
        <?php if ($limitReached): ?>
            <a class="button" href="http://www.linkofwebsite.nl/laatste-nieuws/nieuwsbericht.php?id=<?= $row['id']; ?>">
                Lees meer
            </a>
        <?php endif ?>
    </div>
    

    更新:
    array_slice更改其输入 . 所以在调用 $content = implode(" ",array_splice($words,0,$word_limit)); $之后,包含除第一个64之外的所有单词 . 我更新了该函数 .

  • 0

    要使其动态化,请将您的函数更改为以下内容:

    function limit_words($string, $word_limit){
        $limitReached = FALSE;
        $words = explode(" ",$string);
        $content = implode(" ",array_splice($words,0,$word_limit));
        if (count($words) >= $word_limit) {
            $limitReached = TRUE;
        }
    
        return array($limitReached, $content);
    }
    

    将您的通话部分更改为

    list($limitReached, $content) = limit_words($row['bericht'],64);
    

    然后检查它:

    <div class="nieuws-tekst">
        <?= $content;
      if ($limitReached) { ?>
           <a class="button" href="http://www.linkofwebsite.nl/laatste-nieuws/nieuwsbericht.php?id=<?= $row['id']; ?>">Lees meer</a>
        <?php } ?>
    </div>
    
  • 1

    只需将您的按钮代码放在if中

    <?php
        if (limit_words > 64) {
            echo "<a class="button" href="http://www.linkofwebsite.nl/laatste-nieuws/nieuwsbericht.php?id=<?php echo $row['id']; ?>">Lees meer</a>"}
    ?>
    
  • 0
    <?php
       $string= 'this is a good choice';
       if(str_word_count($string)>64){
     ?>
     <a href="#"><?php echo substr($string,0,63)?> Read More</a>
     <?php
       }else{
          echo $string;
       }
    ?>
    

    使用str_word_count ()函数计算单词 . 并使用substr()函数只显示64个单词 .

相关问题