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

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

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

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

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

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

Это в IMHO типичная проблема, которая должна быть выполнена через CSS, потому что она влияет только на то, как она отображается. Почему бы вам не использовать число column-count CSS3:

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

Но это мотивы часто сокращают фразу в середине слова. Поэтому вам нужно будет обновить код, чтобы найти ближайшее пространство посередине:

 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 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 ()?