只有在发布

时间:2015-08-24 03:57:00

标签: php mysql substring

我只想要' $ output'的前50个字符。已上传到数据库以显示在我的页面上,这对我来说最简单的方法是什么?如果$ output包含超过50个字符,我希望文本以最后一个单词结束而不超过50个字符然后放入" ..."有点像“阅读更多”'部分会。

PHP:

    <?php 
        require_once("nbbc/nbbc.php");

        $bbcode = new BBCode;

        $sql = "SELECT * FROM posts ORDER BY id DESC";

        $res = mysqli_query($dbCon, $sql) or die(mysqli_error($dbCon));

        $posts = "";

        if(mysqli_num_rows($res) > 0) {
            while($row = mysqli_fetch_assoc($res)) {
                $id = $row['id'];
                $title = $row['title'];
                $subtitle = $row['subtitle'];
                $content = $row['content'];
                $date = $row['date'];

                $output = $bbcode->Parse($content);

                $posts .= "<div id='post'><h2><a href='view_post.php?pid=$id' target='_blank'>$title</a></h2><h3 id='subtitle'>$subtitle</h3><h3 id='datethingy'><span style='color: #457F2C;'>Last updated:</span> $date</h3><p>$output</p></div>";

            }
            echo $posts;
        }else {
            echo "There are no posts to be displayed.";
        }
    ?>

4 个答案:

答案 0 :(得分:1)

您可以这样做:

$str50 = substr($mystring, 0, 50);

答案 1 :(得分:1)

如果你的'&#39; $输出&#39;将像你说的那样显示在文本域中,最简单的方法是:

<input type="text" maxlength="50">

答案 2 :(得分:0)

这是切割后漂亮点的最简单方法:

echo (strlen($var) > $length ? substr($var, 0, $length).'...' : $var);

答案 3 :(得分:0)

如果您不想剪切单词,最好的解决方案是使用wordwrap函数,如下所示:

function tokenTruncate($string, $your_desired_width) {
  $parts = preg_split('/([\s\n\r]+)/', $string, null, PREG_SPLIT_DELIM_CAPTURE);
  $parts_count = count($parts);

  $length = 0;
  $last_part = 0;
  for (; $last_part < $parts_count; ++$last_part) {
    $length += strlen($parts[$last_part]);
    if ($length > $your_desired_width) { break; }
  }

  return implode(array_slice($parts, 0, $last_part));
}

这会将文本分成不超过60个字符的行,然后选择第一行。

表示文本短于60个字符,或者在该限制之前有换行符的场景。