2011-08-16 13 views
0

私は、文字列を持っている:文字列を壊すことなく断片に分割します。

$str = 'Hello World, Welcome World, Bye World'; 

私は粉々に、文字列の上にカットします。各部分は10文字でなければなりません。単語が削除される場合は、その単語を次の行に移動します。例については

$output = array(); 

$output[0] = 'Hello '; 
$output[1] = 'World, '; 
$output[2] = 'Welcome '; 
$output[3] = 'World, Bye'; 
$output[4] = 'World'; 

elseとループもしそうであれば、多くのない最短の方法があります。

ありがとうございました

+0

( "")? 'explode( ''、$ str);' – Snps

+0

を使用してください。10文字の文字列の中に2つまたは3つの単語があります。 – Awan

答えて

8

wordwrapを使用してください。デフォルトでは、単語全体が折り返され、分割されません。あなたは配列をしたい場合

echo wordwrap('Hello World, Welcome World, Bye World', 10); 

、その後爆発:

print_r(explode("\n", wordwrap('Hello World, Welcome World, Bye World', 10))); 
+0

シンプルで完全なソリューション。ありがとう – Awan

0
string test = 'Hello World, Welcome World, Bye World'; 
string[] splited = test.Split(' '); 
foreach (string str in s.Split(splited)) 
{ 
Console.WriteLine(str); 
} 

注:そのC#で書かれた、私はそれはあなたのアイデアを与えることを願っています。

よろしく

0

正確な答えではないが、いくつかの同様の問題は、このようなものです:

あなたが長い文字列を持っている、あなたはチャンクにその文字列を分割したいです。あなたは言葉を壊さない方が好きですが、言葉が非常に長いと言葉が壊れることがあります。言葉が非常に長い場合

$string = "Hello I am a sentence but I have verylongwordthat I can split"; 

あなたはこのように、この文で単語を分割します:

$pieces = explode(" ",$string); 
$textArray=array(); 
foreach ($pieces as $p) { 
    $textArray= array_merge($textArray, str_split($p, 10)); 
} 
$stringNew=implode(" ",$textArray); 

出力:ちょうどすべての空白で文字列を分割しないのはなぜ

"Hello I am a sentence but I have verylongwo rdthat I can split"