限制显示字符PHP

时间:2014-01-03 06:09:38

标签: php limit

我在这里有点困惑。我正在创建一个博客,我想限制一篇文章的字符数,所以当读者点击“阅读更多”或“......”时,他们就能阅读完整的文章。我正在搜索并尝试理解代码,但我对于放置代码的位置感到困惑。我找到了这段代码

// strip tags to avoid breaking any html
$string = strip_tags($string);
if (strlen($string) > 500) {
// truncate string
$stringCut = substr($string, 0, 500);
// make sure it ends in a word so assassinate doesn't become ass...
$string = substr($stringCut, 0, strrpos($stringCut, ' ')).'... <a href="/this/story">Read More</a>'; 
}
echo $string;
来自limit text length in php and provide 'Read more' link

。这是我的代码

$articlesql = "SELECT articles.*, categories.category_name, admin.admin_name FROM articles, categories, admin WHERE articles.article_category_id=categories.category_id AND articles.article_admin_id=admin.admin_id";
$articleresult = mysql_query($articlesql);
while($articlerow=mysql_fetch_assoc($articleresult))
echo"
<li>
    <span></span>
    <div>
        <h4><a href='article-single.php?id=".$articlerow['article_id']."' title='view details'>".$articlerow['article_title']."</a></h4>
        <span>
            Posted in <a href = '#'>".$articlerow['category_name']."</a> by <a href='#'>".$articlerow['admin_name']."</a> on <a href='#'>".$articlerow['article_date']."</a>
        </span>
    </div>
    <a href='article-single.php?id=".$articlerow['article_id']."' title='view details'><img src='images/blog-post-1.jpg' alt=''></a>
    <p>".$articlerow['article_content']."</p>
</li>
";

我真的需要有人来帮助我。谢谢!

4 个答案:

答案 0 :(得分:3)

TRY

<?php
$articlesql = "SELECT articles.*, categories.category_name, admin.admin_name FROM articles, categories,
                admin WHERE articles.article_category_id=categories.category_id AND articles.article_admin_id=admin.admin_id";
$articleresult = mysql_query($articlesql);
while($articlerow=mysql_fetch_assoc($articleresult)){

    $string = strip_tags($articlerow['article_content']);
    if (strlen($string) > 500) {
    // truncate string
    $stringCut = substr($string, 0, 500);
    // make sure it ends in a word so assassinate doesn't become ass...
    $string = substr($stringCut, 0, strrpos($stringCut, ' '))."... <a href='article-single.php?id=".$articlerow['article_id']."' title='view details'>Read More</a>";
    }

    echo "
        <li>
            <span></span>
            <div>
                <h4><a href='article-single.php?id=".$articlerow['article_id']."' title='view details'>".$articlerow['article_title']."</a></h4>
                <span>
                    Posted in <a href = '#'>".$articlerow['category_name']."</a> by <a href='#'>".$articlerow['admin_name']."</a> on <a href='#'>".$articlerow['article_date']."</a>
                </span>
            </div>
            <a href='article-single.php?id=".$articlerow['article_id']."' title='view details'><img src='images/blog-post-1.jpg' alt=''></a>
            <p>".$string."</p>
        </li>
    ";
}

答案 1 :(得分:1)

您需要的只是PHP的strrpos和substr函数

编写以下查询:

$ excerpt_query = mysql_fetch_array(mysql_query(&#34; SELECT LEFT(article_content,30)摘录自文章&#34;))或死(mysql_error());

现在,您将在输出的摘录列中显示前30个字符。您可以使用每篇文章ID愉快地使用它。

$excerpt = $excerpt_query['excerpt'];
$spaceIndex = strrpos($excerpt, ' '); //Finds the last space from the excerpt value.

现在echo substr($excerpt, 0, $spaceIndex); // this will echo the correct string as the excerpt.

这应该是实际阅读的更多链接:

echo substr($excerpt, 0, $spaceIndex) . '<a href="single.php?id=1">Read More...</a>';

如果您有任何疑问,请输入。

答案 2 :(得分:0)

我几乎不知道您的代码中发生了什么,但您只需要限制查询中的文本 例如,这将获得100个第一个单词

LEFT(article, 100) AS first100

当你想要展示文章(在一个while循环中)时,你应该放置'...'而不要破坏一个单词

$extract = $articlerow['first100'];
$lastSpace = strrpos($extract, ' ');
echo substr($extract, 0, $lastSpace) . '... ';

答案 3 :(得分:0)

我建议使用Truncate text containing HTML, ignoring tags中的printTruncated函数。

通过使用上面简单的strip_tags代码并设置substr将不会显示带有限制的格式化文章内容。

以下列方式使用printTruncated函数,将显示格式化内容。

printTruncated(500,$articlerow['article_content'])

在上述功能的末尾,您可以设置阅读更多链接,您可以创建一个JavaScript,通过隐藏截断的内容并显示完整内容来显示完整内容。