2013-02-05 206 views
1

我想通過(例如)50個符號(分鐘)來炸開一個字符串,但沒有將單詞分成兩部分。按字符數拆分字符串而不拆分單詞

這可能嗎?

使用str_split()會導致最後一個詞被拆分,這是我不要想要的。

示例:將字符串拆分爲5個符號;

$input = 'This is example, example can be anything.'; 

$output[0] = 'This'; 
$output[1] = 'is example,'; 
$output[2] = 'example'; 
$output[3] = 'can'; 
$output[4] = 'be anything'; 
+3

可你給輸入/輸出的例子嗎? – x4rf41

+0

@ x4rf41我添加了一個例子來發布 –

+1

爲什麼「這是」沒有拆分,但「可以」拆分?分裂背後的邏輯是什麼? – x4rf41

回答

3

我不認爲有一個內置單功能,將做到這一點給你,但你可以做這樣的事情:

Codepad Example Here

$string = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque nec elit dui, nec fermentum velit. Nullam congue ipsum ac quam auctor nec massa nunc."; 

$output = array(); 
while (strlen($string) > 50) { 
    $index = strpos($string, ' ', 50); 
    $output[] = trim(substr($string, 0, $index)); 
    $string = substr($string, $index); 
} 
$output[] = trim($string); 

var_dump($output); 

// array(3) { 
// [0]=> 
// string(50) "Lorem ipsum dolor sit amet, consectetur adipiscing" 
// [1]=> 
// string(55) "elit. Quisque nec elit dui, nec fermentum velit. Nullam" 
// [2]=> 
// string(43) "congue ipsum ac quam auctor nec massa nunc." 
// } 
+0

這是我需要感謝 –

0

只要通過字符串,並在一個數字(數字= 5)的字符後檢查是否下一個字符是空格和分裂。如果沒有空間,不要分裂並轉到下一個空格:-)

0

我想我明白你爲好,那麼你可以使用此功能:

<?php 

    function str_split_len($str, $len) 
    { 
     if($len > strlen($str)) 
     { 
      return false; 
     } 

     $strlen = strlen($str); 
     $result = array(); 
     $words = ($strlen/$len); 

     for($x = 1; $x <= $len; $x++) 
     { 
      $result[] = substr($str, 0, $words); 
      $str = substr($str, $words, $strlen); 
     } 

     return $result; 
    } 

    /* Example */ 
    $res = str_split_len("Split me !haha!", 3); 
    print_r($res); 
?> 
+1

沒有你的功能分詞,嘗試更長的字符串 –