段落の 2 行だけを表示したい。
これを行うにはどうすればよいですか?
<p><?php if($display){ echo $crow->content;} ?></p>
参照しているテキスト コンテンツによっては、次の方法で回避できる場合があります。
// `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];
注- これにより、テキスト内のすべての改行が破棄されます。テキストを元の書式のままにしたい場合は、再度挿入する必要があります。
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
文を意味する場合は、段落を分解して配列の最初の 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));
これを試して:
$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);
乾杯!
これはより一般的な答えです。これを使用して任意の数の行を取得できます。
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);
あなたがやりたいことをするために使うことができます。