// 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>
";
我真的需要有人来帮助我。谢谢!
答案 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,通过隐藏截断的内容并显示完整内容来显示完整内容。