Php 如何仅从mysql中保存的名为body的行回显几行?

Php 如何仅从mysql中保存的名为body的行回显几行?,php,mysql,Php,Mysql,基本上,我只想通过创建函数()在某个页面上回显我的博客文章的摘要这必须限制此处指定的字数。将博客文章的摘要和正文保存在不同的列中。这篇文章考虑了字符数,同时在最后一个单词结束时不删掉字符 function sumarize($your_string){ $count++; $maximum = 10; foreach(explode("\n", $your_string) as $line){ $count++; echo $line."\n";

基本上,我只想通过创建函数()在某个页面上回显我的博客文章的摘要这必须限制此处指定的字数。

将博客文章的摘要和正文保存在不同的列中。

这篇文章考虑了字符数,同时在最后一个单词结束时不删掉字符

function sumarize($your_string){
   $count++;
   $maximum = 10;
   foreach(explode("\n", $your_string) as $line){
       $count++;
       echo $line."\n";
       if ($count == $maximum) break;        
   }
}
使用

稍后,您可以在php中使用此函数在最后一个空格或句点处剪切字符串,这样就不会在最后得到半个剪切字。第二个参数是所需的字符数

function shorten_string($string, $characters)
{
    $shortened_string = "";
    $smaller_string = substr($string, 0, $characters);
    $pos_of_last_space = strrpos($smaller_string, " ");
    $pos_of_last_break = strrpos($smaller_string, " ");

    if (strlen($string) <= $characters) {
        $shortened_string = $string;
    } elseif (!$pos_of_last_space && !$pos_of_last_break) {
        $shortened_string = $smaller_string;
    } else {
        $break_at = 0;
        if ($pos_of_last_space > $pos_of_last_break) {
            $break_at = $pos_of_last_space;
        } else {
            $break_at = $pos_of_last_break;
        }

        $shortened_string = substr($smaller_string, 0, $break_at);
    }
}
函数缩短字符串($string,$characters)
{
$string=“”;
$smaller_string=substr($string,0,$characters);
$pos\u of_last\u space=strrpos($较小的字符串,“”);
$pos\u of_last\u break=strrpos($较小的字符串“”);
if(strlen($string)$pos\u of\u last\u break){
$break_at=$pos_的最后一个空间;
}否则{
$break_at=$pos_of_last_break;
}
$shorted_string=substr($shorted_string,0,$break_at);
}
}
注意:注意在html中放置带有“nbsp”的空格。假设您的表(名为main)如下所示

id | blogpost 1样本1

2样本2

首先,您需要连接到db

$db=NEW MYSQLI('localhost', 'username', 'pass', 'dbname') or die ($db->error);
然后编写以下代码

function sumarize($your_string){
   $count++;
   $maximum = 10;
   foreach(explode("\n", $your_string) as $line){
       $count++;
       echo $line."\n";
       if ($count == $maximum) break;        
   }
}

$result=$db->query("SELECT `id`, `blogpost` FROM `main`");
while($row->fetch_object()){
echo sumarize($row->blogpost);
}

这就是如何获得工作的方法。我们的解决方案将为服务器加载额外的查询。我想您需要获得一些sleep@Tural,它将如何进一步加载服务器?对于既需要正文又需要摘要的页面,请选择正文、摘要;对于只需要摘要的页面,请选择摘要。不需要额外的查询。还要注意的是,它没有在原始问题中提到对摘要有特定的字数限制。如果有,比如说10000篇文章,您的解决方案-选择2列,将影响性能(它选择不需要的列,并且您的数据包变大),但是@genesisφ的解决方案——选择1列并使用php函数进行总结,将做同样的事情,而不为1个不需要的列分配更多内存,这是什么?这堆代码毫无意义。看看创世记solution@TuralTeyyuboglu-如果你有html字符空间怎么办?但是如何使用它呢?基本上,我有一个functions.php文件,在其中保存所有函数,然后在我想要回显文本的页面上使用它。那么我必须把查询放在哪里?@James-把函数放在你所有函数所在的文件中。暂时忘掉sql查询吧。调用此函数,将字符串与所需的最大字符数一起传递。请举例说明如何将字符串与所需的字符数一起传递,但如何使用此函数?基本上我有一个functions.php文件,我在其中保存了所有函数,然后在我想要回显文本的页面上使用它。我不会通过html'nbsp'@ImranOmarBukhsh处理空格:对不起,我没有得到this@genesisφ我无法理解“$your_string”,这里必须传递什么,因为我的字符串保存在mysql的行中。
function sumarize($your_string){
   $count++;
   $maximum = 10;
   foreach(explode("\n", $your_string) as $line){
       $count++;
       echo $line."\n";
       if ($count == $maximum) break;        
   }
}

$result=$db->query("SELECT `id`, `blogpost` FROM `main`");
while($row->fetch_object()){
echo sumarize($row->blogpost);
}