2015-11-01 96 views
1

我有一個字符串,我想分解成一個數組。字符串到數組,最大長度,字符中斷

每個數組都需要有一個設定的長度,比方說45個字符。

每個斷點必須根據單詞,而不是字符(所以,從來沒有超過45,但可能是在30'ish範圍內,如果長時間炭字使用)

所以讓我們利用這個字符串

$content = 'Sed a suscipit enim in consectetur lacus Vestibulum efficitur convallis luctus Curabitur vehicula a massa nec pretium Sed a maximus nunc in aliquam orci Nulla facilisi Nullam vulputate ornare dictum Sed fermentum sapien nec felis gravida eget consequat ex iaculis Vestibulum nec feugiat nisl sed consequat nulla Sed in odio congue dictum augue et mollis nunc Integer libero leo eleifend sed congue ut ultrices sed nulla Integer sapien felis sollicitudin et turpis nec mattis egestas augue Phasellus non lectus ac ipsum ultrices consectetur eu at justo Nam'; 

,所得到的陣列(它是什麼,我以後)

$data = []; 

    $data[] = 'Sed a suscipit enim in consectetur lacus'; 
    $data[] = 'Vestibulum efficitur convallis luctus'; 
    $data[] = 'Curabitur vehicula a massa nec pretium Sed a'; 
    $data[] = 'maximus nunc in aliquam orci Nulla facilisi'; 
    $data[] = 'Nullam vulputate ornare dictum Sed fermentum'; 
    $data[] = 'sapien nec felis gravida eget consequat ex'; 
    $data[] = 'iaculis Vestibulum nec feugiat nisl sed'; 
    $data[] = 'consequat nulla Sed in odio congue dictum'; 
    $data[] = 'augue et mollis nunc Integer libero leo'; 
    $data[] = 'eleifend sed congue ut ultrices sed nulla'; 
    $data[] = 'Integer sapien felis sollicitudin et turpis'; 
    $data[] = 'nec mattis egestas augue Phasellus non lectus'; 
    $data[] = 'ac ipsum ultrices consectetur eu at justo Nam'; 

每個數組都不超過45個字符,並且基於字長而不是硬數字。

我知道我們可以使用這段代碼將字符串分解成一個特定的長度,基於單詞而不是字符,但不知道如何真正使這一切合作。

$content = substr($content, 0, strpos($content, ' ', 45)); 
+0

約'str_split()什麼'http://php.net/manual/en/function.str-split.php或'換行()'http://php.net/manual/en/ function.wordwrap.php或'chunk_split()'http://php.net/manual/en/function.chunk-split.php –

回答

1

你的情況,你可以使用wordwrap功能,然後explodepreg_split

首先,我們需要您的字符串分割成所需長度的片段:

$ps = wordwrap($content, 45); 

默認情況下,分頻器會\n。你可以設置自己:

$ps = wordwrap($content, 45, '==='); // === is your divider  

接下來,如果你需要數組你應該explodepreg_split$ps變量。 如果使用自定義分配器(如===),您可以:

$data = explode('===', $ps); 

隨着\n作爲分頻器使用preg_split

$data = preg_split('/\n/', $ps); 

所以,最終的代碼可以是:

$data = preg_split('/\n/', wordwrap($content, 45)); 
0

這是在第45個字符之前將字符串拆分爲space

$length = strlen($content); 
$startpos = 0; 
$out = array(); 
while($startpos<$length-45) 
    { 
    for ($i = $startpos +45 ; $i > $startpos; $i--) 
    { 
     if($content[$i] == " ") 
      { 
      array_push($out,substr($content,$startpos ,$i-$startpos)); 
      $startpos = $i+1; 
      break; 
      } 
    } 
} 
array_push($out,substr($content,$startpos)); 
var_dump($out);