回声部分文字

时间:2012-04-15 15:23:31

标签: php

我想只显示该段的两行 我该怎么做?

<p><?php if($display){ echo $crow->content;} ?></p>

5 个答案:

答案 0 :(得分:2)

根据您所指的文字内容,您可能可以使用此功能:

// `nl2br` is a function that converts new lines into the '<br/>' element.
$newContent = nl2br($crow->content);

// `explode` will then split the content at each appearance of '<br/>'.
$splitContent = explode("<br/>",$newContent);

// Here we simply extract the first and second items in our array.
$firstLine = $splitContent[0];
$secondLine = $splitContent[1];

注意 - 这会破坏您文本中的所有换行符!如果您仍希望以原始格式保留文本,则必须再次插入它们。

答案 1 :(得分:1)

如果你的意思是句子,你可以通过爆炸段落并选择数组的前两部分来做到这一点:

$array = explode('.', $paragraph);
$2lines = $array[0].$array[1];

否则,您必须计算两行中的字符数并使用substr()函数。例如,如果两行的长度为100个字符,您可以这样做:

$2lines = substr($paragraph, 0, 200);

然而,由于并非所有字体字符都具有相同的宽度,因此可能难以准确地执行此操作。我建议采取最广泛的角色,例如“W&#39; W&#39;并在一行中回复其中的许多内容。然后计算可以跨两行显示的最大字符的最大数量。从这里你将拥有最佳数字。虽然这不会给你一个紧凑的两行,但它将确保它不能超过两行。

然而,这可能导致一个词被切成两半。为了解决这个问题,我们可以使用explode函数来查找提取字符中的最后一个单词。

$array = explode(' ', $2lines);

然后我们可以找到最后一个单词并从最终输出中删除正确数量的字符。

$numwords = count($array);
$lastword = $array[$numwords];
$numchars = strlen($lastword);
$2lines = substr($2lines, 0, (0-$numchars));

答案 2 :(得分:1)

function getLines($text, $lines)
{
    $text = explode("\n", $text, $lines + 1); //The last entrie will be all lines you dont want.
    array_pop($text); //Remove the lines you didn't want.

    return implode("<br>", $text); //Implode with "<br>" to a string. (This is for a HTML page, right?)
}

echo getLines($crow->content, 2); //The first two lines of $crow->content

答案 3 :(得分:0)

这是一个更通用的答案 - 你可以使用这个获得任意数量的行:

function getLines($paragraph, $lines){
    $lineArr = explode("\n",$paragraph);
    $newParagraph = null;
    if(count($lineArr) > 0){
        for($i = 0; $i < $lines; $i++){
            if(isset($lines[$i]))
                $newParagraph .= $lines[$i];
            else
                break;
        }
    }
    return $newParagraph;
}

你可以使用echo getLines($crow->content,2);做你想做的事。

答案 4 :(得分:0)

试试这个:

$lines = preg_split("/[\r\n]+/", $crow->content, 3);
echo $lines[0] . '<br />' . $lines[1];

并且对于可变数量的行,请使用:

$num_of_lines = 2;
$lines = preg_split("/[\r\n]+/", $crow->content, $num_of_lines+1);
array_pop($lines);
echo implode('<br />', $lines);

干杯!