我正在为网站制作新闻报道。我想如果一条新闻消息超过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>
这是我在反应后得到的。但内容显示但是更多按钮没有显示。
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 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.Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.Duis aute irure dolor in reprehenderit 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“< / p>
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
答案 0 :(得分:1)
要使其动态化,请将您的功能更改为以下内容:
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 :(得分: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));
之后$ words包含除第一个64之外的所有单词。我更新了函数。
答案 2 :(得分:0)
只需将您的按钮代码放入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>"}
?>
答案 3 :(得分: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个单词。