我想知道是否可以将文本拆分为两部分。
在我的网站上,我有一个产品说明(500-1000字),我想像这样显示:
<div class="text-col">
<?php echo nl2br($col1); ?>
</div>
<div class="text-col">
<?php echo nl2br($col2); ?>
</div>
答案 0 :(得分:8)
这样的东西?
$len = strlen($input);
$space = strrpos($input," ",-$len/2);
$col1 = substr($input,0,$space);
$col2 = substr($input,$space);
// now output it
答案 1 :(得分:7)
这在恕我直言中是一个典型的问题,应该通过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;
}
答案 2 :(得分: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);
但是这个词经常在一个单词的中间切断这句话。因此,您需要更新代码以找到中间的最近空间:
for ($i = $middle; $i < $length; $i ++) {
if ( substr($text, $i, 1) == " " ) return;
}
$cut = $i;
$col1 = substr($text, 0, $cut);
$col2 = substr($text, $cut+1);
这个空间并不是唯一可以剪切文字的地方。所以,你必须寻找线的末端。而且有些空间也不好。例如,在分号之前的空间juste。因此,您将添加以改进此代码以改善结果。
您还可以尝试使用css3多列指令: http://www.css3.info/preview/multi-column-layout/ 但它得到了IE的支持。
答案 3 :(得分: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。
答案 4 :(得分:0)
你能使用wordwrap()函数吗?