2012-04-15 26 views
0

段落の2行だけを表示したい。
どうすればよいですか?あなたが参照しているテキストコンテンツに応じて、エコー部分文字列

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

より具体的にする必要があります。 –

+0

あなたはイラストレーションの助けを借りることができます。 –

答えて

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

乾杯を!

1

、あなたはこれで逃げることができるかもしれません:

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

NOTE - これは、すべての行を破壊することは、あなたのテキストを持っている壊れます!それでも元の書式でテキストを保持したい場合は、もう一度挿入する必要があります。あなたは二行と使用を越えた文字の数をカウントする必要がありますそれ以外の場合は

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

+0

"\ n"で分割しないのはなぜですか? –

+0

@zol - これは 'nl2br()'の機能です。 [マニュアルより](http://php.net/manual/en/function.nl2br.php)、\ r \ n、\ n \ r、\ n、\ rで動作します。 – Lix

+0

nl2br分割しないで、それは変換します... –

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)); 
+0

@Lix申し訳ありません、それは修正されました。 – James

+0

ええ - 私の投票を削除したいが、 "。"文字も問題です。 'Dr.Love'という文字列がテキストの中に含まれているとどうなりますか? – Lix

+0

そのため、代わりにsubstrを使用することをお勧めします。 – James

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);を使用することができます。

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 
+0

OPをもう一度読んでください。彼は最初の2行だけを返したいと思っています。 – Lix

+1

@Lixそれを修正しました。投票を削除したいですか? – Sawny

+0

コメント行も再読み込みしたいかもしれません:)あなたの編集後には意味がありません... – Lix

関連する問題