2015-11-01 99 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);