Php 缩短文本以添加“阅读更多”链接

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>

我有以下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>
</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()