2012-04-21 2 views
6

텍스트를 두 부분으로 나눌 수 있는지 알고 싶습니다. 내 웹 사이트에PHP를 사용하여 텍스트를 두 개의 열로 나누기

나는 제품 설명 (500-1000 단어)하고 난과 같이 표시 할 싶습니다 같은

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


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

답변

8

뭔가?

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

시도해 보니 이상한 행동입니다. 첫 번째 열에는 텍스트가 있고 두 번째 열에는 텍스트의 마지막 단어 인 단 한 단어 만 있습니다. – Psyche

+1

오타가 있습니다. 'strpos' 대신'strrpos'를 사용하십시오. –

+0

사실 오타는 ['strrpos'] (http://php.net/strrpos) –

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에 대한 지원이 있습니다.

+0

이것은 html을 나눕니다. 이것에 어떤 해결책이있을 수 있습니까? – jcarlosweb

7

이것은 IMHO에서 CSS를 통해 수행해야하는 일반적인 문제입니다. 이는 표시 방법에만 영향을주기 때문입니다.

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에서 복사)

+1

이 기능은 최신 브라우저에서는 아직 구현되지 않았습니다. http://caniuse.com/#search=column – matmancini

+2

대부분의 브라우저가이 기능을 지원하므로 가장 좋은 대답입니다. (대부분 접두어가 붙어 있지만 작동합니다) – rafamds

1

쉽게 PHP에서이 개 부분에 텍스트를 분할 할 수 있습니다 : 당신은 왜 CSS3의 column-count 사용하지 않는

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

을 공간이 좋은 텍스트 잘라 내기위한 유일한 장소가 아니다. 따라서 선의 끝을 찾아야합니다. 그리고 일부 공간도 좋지 않습니다. 예를 들어 세미콜론 앞에 공간이 있습니다. 따라서 개선 된 결과를 위해이 코드를 개선하기 위해 추가 할 것입니다.

또한 css3 다중 열 지시문을 시도 할 수도 있습니다. http://www.css3.info/preview/multi-column-layout/ IE에서 지원하는 메모입니다.

+0

, 이것은 html을 나눕니다. 이것에 어떤 해결책이있을 수 있습니까? – jcarlosweb

+0

HTML이있는 텍스트를 스패닝하는 것은 HTML의 유형에 따라 더 복잡 할 수 있습니다. 몇 가지 좋은 답변이 있습니다. http://stackoverflow.com/questions/16583676/shorten-text-without-splitting-words-or-breaking-html-tags – Matthieu

+0

대단히 감사합니다. 진실은 점점 복잡해지고 있습니다. – jcarlosweb

관련 문제