PHP - разбить строку, если она содержит слова длиннее 5 символов - PullRequest
0 голосов
/ 01 ноября 2010

Как уже говорилось в теме, мне нужна рекурсивная функция, которая разбивает строку, если она содержит слова длиннее, чем (например) 5 символов.

Пример:

если у меня есть строка "ааааа ааа аааа ааааа" то нормально;

если у меня есть строка "aaaaa bbbbbb aa aaaaa", мне нужно разделить 1 раз (и, например, добавить символ # перед первым bbbbb и последним b) Таким образом, результатом будет «aaaaa bbbbb # b aa aaaaa»

если у меня есть строка "aaaaa bbbbbbbbbbbbbbbb aa aaaaa", как раньше; обратите внимание, что жирный шрифт на этот раз имеет 16 символов, поэтому мне нужно разделить 3 раза на этот раз:)

Есть ли уже реализованная функция php или мне нужно это сделать? Приветствия

Ответы [ 3 ]

3 голосов
/ 01 ноября 2010

Использование preg_replace:

echo preg_replace("`(\S{5})(?!\s|$)`", '$1#', "aaaaa bbbbbbbbbbbbbbbb aa aaaaa")
// aaaaa bbbbb#bbbbb#bbbbb#b aa aaaaa

Обратите внимание: я заменяю каждый набор из 5 символов , а не , за которым следует пробел с набором из 5 символов + #. Очевидно, вы можете заменить # на что-нибудь еще.

1 голос
/ 01 ноября 2010

в одну сторону можно было бы использовать split () и использовать такое регулярное выражение, как этот

[a-zA-Z] {5}

, поэтому

split ('[a-zA-Z] {5}', $ string);

edit: только что заметили, что функция УСТАРЕЛА, поэтому вместо нее используйте preg_split

0 голосов
/ 01 ноября 2010
$result = array();
$source = // assign source here
for($idx = 0; $idx < count($source); $idx += 5) {
    $result = substr($source, $idx, 5);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...