代码之家  ›  专栏  ›  技术社区  ›  DisgruntledGoat

如何将HTML截短到一定的字符数?

  •  4
  • DisgruntledGoat  · 技术社区  · 16 年前

    <?=substr( strip_tags($a['content']), 0, 400 )?>
    

    问题是,这会丢失所有的格式,而我只会得到一大块文本。但是,如果我不剥离标签,显然有些标签会去不关闭和混乱的布局。

    4 回复  |  直到 16 年前
        1
  •  0
  •   Bug Magnet    16 年前

    我不确定这是否是解决问题的最佳方法,但这是一个简单的方法,如果您只关心保留1或2个标记以在html中保留一些基本格式,那么它会起作用。

    因此,您可以执行以下操作:找到要保留的标记,并用一些唯一的字符组合替换它们,然后在截断字符串后,用最初替换它们的标记查找/替换您创建的唯一字符串组合。

    $content = str_replace("<br/>", "\n", $a['content']);
    $content = substr(strip_tags($content), 0, 400); 
    echo str_replace("\n", "<br/>", $content);
    
        2
  •  4
  •   jdp    16 年前
        3
  •  0
  •   James Santiago    16 年前

    这可能无法回答您的问题,但这是解决此问题的一种方法。

    如果我写博客的话,我想定义一下文章被截断的地方。这样我就可以像视频一样发布内容,并在视频结束处截断帖子,然后在查看帖子时显示其余内容。

    试着在你希望文章被截断的地方添加一个特定的字符串,例如“--”或者一些标记,这样中断位置就不可见了。

    然后,您可以使用mb\u stripos存储中断字符串的位置,然后将该位置作为substring方法的长度传递。

    或者。。。

    <?=substr( strip_tags($a['content']), 0, mb_stripo(strip_tags($a['content']),
    "break string"))?>
    
        4
  •  0
  •   Luke    16 年前

    这可能没有您想要的那么准确,但是如果您可以确保只使用文本标记,例如标题链接和段落,例如:

    $i = 0;
    while($i < 400){
        $i = strpos($string, '</p>', $i) + 4;
      }
     echo substr( $string, 0, strpos($string, '</p>', $i)+4);
    

    推荐文章