2012-05-04 51 views
2

想象一下,我有150個字符的長字符串。我想將它分成3部分,每部分最長50個字符。訣竅是我還必須保持文字完整,而將字符串分成3部分。將字符串劃分爲3個部分並保留字完整

我可以使用substr並檢查它是否將單詞切成一半。我想知道是否有任何其他優雅的方式來做到這一點。

我也必須記住,字符串可能少於150個字符。例如,如果它是140個字符長,那麼它應該是50 + 50 + 40.

如果它小於100,應該是50 + 50.如果它是50個字符或更少,它不應該劃分字符串。

我很樂意聽到您的想法/方法來解決這個問題。

非常感謝您的時間和關注。

+0

可能重複[如何在PHP截斷字符串,以最接近一定數目的字符的字?( http://stackoverflow.com/questions/79960/how-to-truncate-a-string-in-php-to-the-word-closest-to-a-certain-number-of-chara) – codaddict

+2

ref:[ wordwrap](http://php.net/manual/function.wordwrap.php) – Yoshi

回答

5

聽起來像是你只是想PHP函數wordwrap()

字符串換行(字符串$海峽[摘要$寬度= 75,串$破= 「\ n」[,布爾$切=假] ]])

使用字符串中斷字符將字符串包裝爲給定數量的字符。

+0

這是一個快速的,我不知道爲什麼我想念它。非常感謝。 – Revenant

1

我不認爲這是最好的解決方案的性能,明智的,但它的服用點

$text = 'Lorem te...'; 
$strings = array(0=>''); 
$string_size = 50; 
$ci = 0; 
$current_len = 0; 
foreach(explode(' ', $text) as $word) { 
    $word_len = strlen($word) + 1; 
    if(($current_len + $word_len) > ($string_size - 1)) 
    $strings[$ci] = rtrim($strings[$ci]); 
    $ci++; 
    $current_len = 0; 
    $strings[$ci] = ''; 
    } 

    $strings[$ci] .= $word.' '; 
    $current_len = $current_len + $word_len; 
} 
+1

這或多或少是我在看到AD7six解決方案之前所做的。 –

+1

感謝您的關注。看起來'wordwrap()'是最優雅的方法。 – Revenant

+0

啊,是的,wordwrap看起來像是最完美的解決方案! – xCander

相關問題