Php 缩短文本以添加“阅读更多”链接
我有以下HTML代码:Php 缩短文本以添加“阅读更多”链接,php,jquery,html,Php,Jquery,Html,我有以下HTML代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>TestPost</title> <script src="jquery-2.1.4.min.js"></script> <script src="more.js"></script>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>TestPost</title>
<script src="jquery-2.1.4.min.js"></script>
<script src="more.js"></script>
</head>
<body>
<div class="post1">
This is post one
</div>
<div class="post1">
Another post number one
</div>
<div class="post2">
And this is post two
</div>
<div class="post3">
Last but not least, post three
</div>
</body>
</html>
测试桩
这是第一站
另一个职位第一
这是第二站
最后但并非最不重要的一点是,发布三条
我要找的是以下内容:
当div中的文本长度超过5个字符时,应该将其截断并添加…阅读更多(包括指向页面的链接)
我尝试了一些PHP和一些JQuery,但老实说,我不知道该用什么
如果我能得到答案,那就太棒了,但如果能朝着正确的方向努力,我也会非常感激:)
编辑:添加第二个post1是为了测试任何想知道的人。要使用PHP实现这一点,当您输出文本时,请通过以下缩短函数运行它:
function shorten($output, $limit = 5) {
$output = htmlspecialchars($output, ENT_QUOTES, 'UTF-8');
if (strlen($output) > $limit) {
$output = substr($output, 0, $limit) . ' <a href="#">... read more</a>';
}
echo $output;
}
<div id="post1">
<?php shorten('This is post one'); ?>
</div>
函数缩短($output,$limit=5){
$output=htmlspecialchars($output,ENT_引号,'UTF-8');
如果(strlen($output)>$limit){
$output=substr($output,0,$limit)。“”;
}
echo$输出;
}
您可以这样使用它:
function shorten($output, $limit = 5) {
$output = htmlspecialchars($output, ENT_QUOTES, 'UTF-8');
if (strlen($output) > $limit) {
$output = substr($output, 0, $limit) . ' <a href="#">... read more</a>';
}
echo $output;
}
<div id="post1">
<?php shorten('This is post one'); ?>
</div>
要使用PHP实现这一点,当您输出文本时,请通过以下缩短函数运行它:
function shorten($output, $limit = 5) {
$output = htmlspecialchars($output, ENT_QUOTES, 'UTF-8');
if (strlen($output) > $limit) {
$output = substr($output, 0, $limit) . ' <a href="#">... read more</a>';
}
echo $output;
}
<div id="post1">
<?php shorten('This is post one'); ?>
</div>
函数缩短($output,$limit=5){
$output=htmlspecialchars($output,ENT_引号,'UTF-8');
如果(strlen($output)>$limit){
$output=substr($output,0,$limit)。“”;
}
echo$输出;
}
您可以这样使用它:
function shorten($output, $limit = 5) {
$output = htmlspecialchars($output, ENT_QUOTES, 'UTF-8');
if (strlen($output) > $limit) {
$output = substr($output, 0, $limit) . ' <a href="#">... read more</a>';
}
echo $output;
}
<div id="post1">
<?php shorten('This is post one'); ?>
</div>
使用属性
class
而不是id
。将id='post'
替换为class='post'
将此代码用于您的more.js
var mess_content = $('.post');
mess_content.each(function(){
if ($(this).text().length > 120) {
var obrtext = $(this).text().substr(0,120) ;
$(this).html(obrtext+"<a href='#'>read more</a>") ;
}
});
var mess_content=$('.post');
每个(函数()的内容){
如果($(this).text().length>120){
var obrtext=$(this.text().substr(0120);
$(this.html(obrtext+);
}
});
使用属性class
而不是id
。将id='post'
替换为class='post'
将此代码用于您的more.js
var mess_content = $('.post');
mess_content.each(function(){
if ($(this).text().length > 120) {
var obrtext = $(this).text().substr(0,120) ;
$(this).html(obrtext+"<a href='#'>read more</a>") ;
}
});
var mess_content=$('.post');
每个(函数()的内容){
如果($(this).text().length>120){
var obrtext=$(this.text().substr(0120);
$(this.html(obrtext+);
}
});
您到底尝试了什么?在PHP中,您可以使用strlen和substr,在JS中,它类似于您两次使用的.Id post1为什么???向我们展示您在PHP和JavaScript中的尝试。简言之,如果您希望“阅读更多”按钮立即显示其余内容,JavaScript可能是正确的解决方案。当它只是显示,并且“阅读更多”导致不同的页面时,我会使用PHP。您的HTML也是无效的,您不能有相同的ID两次。这并不能回答问题,但从语义的角度来看,如果您列出内容,您应该使用列表标记,或者
或者
。也就是说,为了回答您的问题,我想看看哪一个具有客户端的优势,从而在不同的设备之间提供更好的用户体验(您可能希望在桌面上显示比移动设备更多的文本…),您到底尝试了什么?在PHP中,您可以使用strlen和substr,在JS中,它类似于您两次使用的.Id post1为什么???向我们展示您在PHP和JavaScript中的尝试。简言之,如果您希望“阅读更多”按钮立即显示其余内容,JavaScript可能是正确的解决方案。当它只是显示,并且“阅读更多”导致不同的页面时,我会使用PHP。您的HTML也是无效的,您不能有相同的ID两次。这并不能回答问题,但从语义的角度来看,如果您列出内容,您应该使用列表标记,或者
或者
。也就是说,为了回答你的问题,我想看看哪个客户端有这样做的优势,从而在不同的设备之间提供更好的用户体验(你可能希望在桌面上显示比移动设备更多的文本…),如果帖子的内容有HTML标记,这可能会给你带来麻烦。仍然不正确。您也在转义您注入的代码(the怪异,我把它作为输出:$limit){$output=substr($output,0,$limit)。“…阅读更多”;}echo$output;}?>但这可能是我做错了什么?更新你的问题,让我看看你是如何使用它的。Nvm,我不知道为什么它不起作用,但现在它起作用了!但是,有没有一种方法可以在php中选择一个div id/类来使用代码,而不必在文本周围插入php?如果帖子的内容有HTML标记,这可能会给你带来麻烦。仍然不正确。您也在转义您注入的代码(the怪异,我把它作为输出:$limit){$output=substr($output,0,$limit)。“…阅读更多”;}echo$output;}?>但这可能是我做错了什么?更新你的问题,让我看看你是如何使用它的。Nvm,我不知道为什么它不起作用,但现在它起作用了!但是,有没有一种方法可以在php中选择一个div id/类来使用代码,而不必在文本周围插入php?谢谢!到目前为止,这对我来说很有效,我只需要在read more上做一些广告,将它链接到另一个页面。我尝试了同样的方法,但输出的是文本。不确定如何将其更改为工作链接:x,因为当您删除锚定标记两侧的“时,/at会将其弄乱。将最后一个text()
更改为html()
谢谢!到目前为止,这对我很有效,我只需要在read more上添加一些东西,将其链接到不同的页面。我尝试了相同的方法,但输出将是文本。不确定如何将其更改为工作链接:x,因为当您删除锚定标记两侧的“时,/at会弄乱它。更改最后一个文本()
到html()