7

我想知道是否可以将文本分成两部分。

在我的网站上,我有一个产品描述(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

恕我直言,这是一个典型的问题,应该通过 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 中轻松地将文本分成两部分:

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

但是这个mos经常在一个单词的中间切断这个短语。因此,您需要更新代码以找到中间最近的空间:

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

这很简单:

$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 回答
0

你可以使用 wordwrap() 函数吗?

于 2012-04-21T14:46:16.863 回答