0

段落の 2 行だけを表示したい。
これを行うにはどうすればよいですか?

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

5 に答える 5

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];

- これにより、テキスト内のすべての改行が破棄されます。テキストを元の書式のままにしたい場合は、再度挿入する必要があります。

于 2012-04-15T15:28:01.807 に答える
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
于 2012-04-15T15:45:42.093 に答える
1

文を意味する場合は、段落を分解して配列の最初の 2 つの部分を選択することでこれを行うことができます。

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

それ以外の場合は、2 行の文字数を数え、substr() 関数を使用する必要があります。たとえば、2 行の長さが 100 文字の場合、次のようにします。

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

ただし、すべてのフォント文字が同じ幅であるとは限らないため、これを正確に行うのは難しい場合があります。「W」などの最も広い文字を使用して、これらを 1 行にできるだけ多くエコーすることをお勧めします。次に、2 行にまたがって表示できる最大の文字の最大数を数えます。これから、最適な数が得られます。これによりコンパクトな 2 行にはなりませんが、2 行を超えることはありません。

ただし、これにより、単語が 2 つに分割される可能性があります。これを解決するために、explode 関数を使用して、抽出された文字の最後の単語を見つけることができます。

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

次に、最後の単語を見つけて、最終出力から正しい数の文字を削除できます。

$numwords = count($array);
$lastword = $array[$numwords];
$numchars = strlen($lastword);
$2lines = substr($2lines, 0, (0-$numchars));
于 2012-04-15T15:29:39.803 に答える
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);

乾杯!

于 2012-04-15T16:18:23.877 に答える
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);あなたがやりたいことをするために使うことができます。

于 2012-04-15T15:36:23.307 に答える