Разделить текст на два столбца с помощью PHP

Я хотел бы знать, можно ли разделить текст на две части.

на моем веб-сайте у меня есть описание продукта (500-1000 слов) , и я хотел бы отобразить его так:

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


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

5 ответов


что-то вроде этого?

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

это в 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)


Вы можете легко разделить текст на две части на 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);

но этот 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);

пространство-не единственное место для хорошего текста. Итак, вам придется искать концы линии. И некоторые пространства тоже не очень хороши. Например, пространство juste перед точкой с запятой. Таким образом, вы добавите, чтобы улучшить этот код для улучшения результаты.

вы также можете попробовать директиву CSS3 multi-column : http://www.css3.info/preview/multi-column-layout/ но это примечание поддерживается IE.


Это так же просто, как:

$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 у вас уже есть поддержка несколько столбцов текста.


можете ли вы использовать функцию wordwrap ()?