将字符串切成碎片而不会破坏文字。

时间:2011-08-16 10:02:10

标签: php arrays string

我有一个字符串:

$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';

如果没有那么多if else和循环,是否存在最短路径。

由于

3 个答案:

答案 0 :(得分:8)

使用wordwrap。默认情况下,它会包装整个单词,而不会将它们分割成碎片。

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

如果你想要一个数组,那么之后会爆炸:

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

答案 1 :(得分:0)

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

注意:它是用C#编写的,我希望它会给你一个想法。

此致

答案 2 :(得分: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"