Оставит слова в строке равно N символов ?

usergeyv

Знаток
Регистрация
5 Июл 2013
Сообщения
152
Реакции
25
Хочу оставить слова(цифры, енг,рус) в строке равно 4, остальные вырезать или заменить пробелом,
делаю
PHP:
$new_test = preg_replace('/(?<=\s)(\S{1,3}|\S{5,})(?=\s)/', '  ', $new_test);
но оставляет короткие, может есть иное решения не используя preg_replace?
 

usergeyv

Знаток
Регистрация
5 Июл 2013
Сообщения
152
Реакции
25
вот так работает
Код:
$new_test = preg_replace('/(?<=\s)(\S{1,3}|\S{5,})(?=\s)/u', ' ', $new_test);
правильно это?
 

lag

Мой дом здесь!
Регистрация
13 Окт 2014
Сообщения
290
Реакции
366
вот так работает
Код:
$new_test = preg_replace('/(?<=\s)(\S{1,3}|\S{5,})(?=\s)/u', ' ', $new_test);
правильно это?
На случай если вокруг слова не окажется пробелов (слово в самом начале или в самом конце строки)
(?<=\s) и (?=\s) заменить на (?<!\S) и (?!\S).
Код:
$new_test = preg_replace('/(?<!\S)(\S{1,3}|\S{5,})(?!\S)/u', ' ', $new_test);

Ещё вариант:
Код:
$new_test = preg_replace('/(?<!\S)\S{1,3}+(\S\S+|(?!\S))/u', ' ', $new_test);
 
Сверху