0

ホームページに 2 つの投稿のスニペットを表示したい。ここに私が持っているコードがあります:

    function getPostsHome() {
    $query = mysql_query("SELECT * FROM posts LIMIT 0,2") or die(mysql_error());
    while($post = mysql_fetch_assoc($query)) {
        echo "<h3>" . $post['Title'] . "</h3>";
        echo "<p>" . $post['Content'] . "</p><br /><br />";

    }
}

タイトルを 25 文字、次に「...」、コンテンツを 100 文字、次に「...」に切り詰めるにはどうすればよいですか?

ありがとうございました。

4

4 に答える 4

0

他の答えは、奇妙な結果を生み出す可能性があります。26 文字の文字列を考えてみましょう。他の回答では、この文字列は 25 文字 + 3 "..." に切り捨てられます。文字列26に対して28文字。それはあなたが望むものではありません。したがって、良い答えは次のとおりです。

<?php
    function trunc($str, $len) {
        if (strlen($str) > $len+3) {
            $str = substr($str, 0, $len) . "...";
        }
        return $str;
    }


    $title = trunc($title, 25);
    $content = trunc($content, 100);

    echo $title;

?>
于 2013-04-25T22:44:16.467 に答える
0

これで試してください

function getPostsHome() {
    $query = mysql_query("SELECT * FROM posts LIMIT 0,2") or die(mysql_error());
    while($post = mysql_fetch_assoc($query)) {
      echo "<h3>" . (strlen($post['Title']) > 25 ? substr($post['Title'], 0, 25)."..." : $post['Title']) . "</h3>";
      echo "<p>" . (strlen($post['Content']) > 100 ? substr($post['Content'], 0, 100)."..." : $post['Content']) . "</p><br /><br />";
    }
}

申し訳ありませんが、これで修正されました

于 2012-04-08T06:43:01.733 に答える
0

使用 substr()strlen()機能:

交換:

  echo "<h3>" . $post['Title'] . "</h3>";

と:

if(strlen($post['Title']) >25)
  echo "<h3>" . substr($post['Title'],0,25)."....</h3>";
else
   echo "<h3>" . $post['Title'] . "</h3>";
于 2012-04-08T06:43:06.723 に答える