7

テキストを 2 つの部分に分割できるかどうかを知りたいです。

私のウェブサイトには、製品の説明 (500 ~ 1000 語) があり、次のように表示したいと考えています。

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


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

5 に答える 5

9

このようなもの?

$len = strlen($input);
$space = strrpos($input," ",-$len/2);
$col1 = substr($input,0,$space);
$col2 = substr($input,$space);
// now output it
于 2012-04-21T14:22:34.147 に答える
8

これはIMHOでの典型的な問題であり、CSSを介して実行する必要があります。これは、表示方法にのみ影響するためです。CSS3を使ってみませんかcolumn-count

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

( http://www.quirksmode.org/css/multicolumn.htmlからコピー)

于 2012-04-21T14:36:03.233 に答える
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);

しかし、このモットーは単語の途中でフレーズをカットすることがよくあります。したがって、コードを更新して、中央の最も近いスペースを見つける必要があります。

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 ではサポートされていません。

于 2012-04-21T14:39:36.030 に答える
0

ワードラップ()関数を使用できますか?

于 2012-04-21T14:46:16.863 に答える
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 では、複数列のテキストがすでにサポートされています。

于 2012-04-21T14:27:36.313 に答える