2012-04-21 15 views
6

テキストを2つに分割することが可能かどうかを知りたいと思います。私のウェブサイト上でPHPを使用してテキストを2つの列に分割する

私は、製品の説明(500〜1000個の単語を)持っていると私はそうのようにそれを表示したいと思います。このような

<div class="text-col"> 
    <?php echo nl2br($col1); ?> 
</div> 


<div class="text-col"> 
    <?php echo nl2br($col2); ?> 
</div> 

答えて

8

何か?

$len = strlen($input); 
$space = strrpos($input," ",-$len/2); 
$col1 = substr($input,0,$space); 
$col2 = substr($input,$space); 
// now output it 
+0

これを試してみると、それは奇妙な動作をします。最初の列にはテキストがあり、2番目の列にはテキストの最後の単語が1つのみです。 – Psyche

+1

タイプミスがあります。 'strpos'の代わりに' strrpos'を使います。 –

+0

実際にはタイプミスは、['strrpos'](http://php.net/strrpos) –

0

それは同じくらい簡単です:

$text = "This should be a very long product description with some bold specs in it."; 
$splitat = strpos($text," ",strlen($text)/2); 
$col1 = substr($text, 0, $splitat); 
$col2 = substr($text, $splitat); 

しかし、関係する他の要因、光段落幅、ハイフネーション、テキストブロックの高さがあるかもしれないので、現実には、あなたは、それをクライアント側の操作が必要になります、

CSS3では、すでにmultiple columns of textのサポートを受けています。

+0

これはhtmlを分割します。これにはどんな解決策があるのでしょうか? – jcarlosweb

7

これはIMHOの典型的な問題です。これは、CSSの表示方法のみに影響するため、CSSを使用して行う必要があります。あなたはCSS3のcolumn-countを使用していない理由:(http://www.quirksmode.org/css/multicolumn.htmlからコピー)

div#multicolumn1 { 
    -moz-column-count: 3; 
    -moz-column-gap: 20px; 
    -webkit-column-count: 3; 
    -webkit-column-gap: 20px; 
    column-count: 3; 
    column-gap: 20px; 
} 

+1

この機能は、現代のブラウザではまだ実装されていません。 http://caniuse.com/#search=column – matmancini

+2

これは、ほとんどのブラウザがこの機能をサポートしているので、これが最良の答えです。 (それらのほとんどは接頭辞付きですが、動作します) – rafamds

1

あなたは簡単にPHPで2つの部分のテキストを分割することができます。

$text = "my very long text with a lot of words"; 
$length = strlen($text); 
$middle = round($length/2, 0); 
$col1 = substr($text, 0, $middle); 
$col2 = substr($text, $middle); 

しかし、これMOTSは、多くの場合、カット単語の真ん中にあるフレーズ。だから、真ん中の最寄りのスペースを見つけるために、コードを更新する必要があります:

for ($i = $middle; $i < $length; $i ++) { 
    if (substr($text, $i, 1) == " ") return; 
} 
$cut = $i; 
$col1 = substr($text, 0, $cut); 
$col2 = substr($text, $cut+1); 

スペースが素敵なテキストのカットのためだけの場所ではありません。だから、行の終わりを探す必要があります。いくつかのスペースはうまくいかない。例えばセミコロンの前のスペース。このコードを改善して結果を向上させるために追加します。

また、css3マルチカラムディレクティブ: http://www.css3.info/preview/multi-column-layout/ を試すこともできますが、IEではサポートされています。

+0

、これはhtmlを壊します。これにはどんな解決策があるのでしょうか? – jcarlosweb

+0

HTMLでテキストを叩くことは、その中のHTMLの型に応じてもっと複雑になる可能性があります。いくつかの良い答えがあります:http://stackoverflow.com/questions/16583676/shorten-text-without-splitting-words-or-breaking-html-tags – Matthieu

+0

ありがとうございます。真実は非常に複雑になってきています。 – jcarlosweb

関連する問題