Разрежьте строку на кусочки, не ломая слов. - PullRequest
0 голосов
/ 16 августа 2011

У меня есть строка:

$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 ]

8 голосов
/ 16 августа 2011

Использование wordwrap.По умолчанию он оборачивает целые слова и не разрезает их на части.

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

Если вам нужен массив, разбейте потом:

print_r(explode("\n", wordwrap('Hello World, Welcome World, Bye World', 10)));
0 голосов
/ 05 февраля 2014

Хотя это не совсем ответ, похожая проблема выглядит так:

У вас длинная строка, вы хотите разбить эту строку на куски. Вы предпочитаете не разбивать слова, но слова могут быть разбиты, если слово очень длинное.

$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"
0 голосов
/ 16 августа 2011
string test = 'Hello World, Welcome World, Bye World';
string[] splited = test.Split(' ');
foreach (string str in s.Split(splited))
{
Console.WriteLine(str);
}

Примечание: написано на C #, надеюсь, оно даст вам идею.

Привет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...