Перед каждым словом [a-zа-я] поставить знак '+', для остальных добавить '>'
Необходимо обработать строку (UTF8) регулярным выражением по следующим правилам:
1) перед каждым словом, состоящим только из букв [a-zа-я] - поставить знак '+'
2) для остальных слов добавить в начало знак '>'
Словом будем считать любую последовательность символов, отделяемые пробелом, началом или концом строки. Для простоты считаем что все символы в строке в нижнем регистре.
Примеры:
1) "смартфон huawei p20 black sup7er" -> "+смартфон +huawei >p20 +black >sup7er"
2) "смартфон samsung x 20 412s" -> "+смартфон +samsung +x >20 >412s"
Кто это сделать?
Ответы (2 шт):
Автор решения: Gagablik
→ Ссылка
$text = 'смартфон samsung x 20 412s';
$words = explode(" ", $text);
$result = '';
foreach ($words as $value) {
$result .= preg_match('/^[а-яa-z]+$/u', $value) ? '+'.$value.' ' : '>'.$value.' ';
}
$result = mb_substr($result, 0, -1);
Автор решения: Эдуард
→ Ссылка
$text = 'смартфон huawei p20 black sup7er
смартфон samsung x 20 412s';
$text = preg_replace(['~\b\pL+\b~u', '~\h+\K[^+][\pL\d]+~u'], ['+$0', '>$0'], $text);
echo $text; // +смартфон +huawei >p20 +black >sup7er +смартфон +samsung +x >20 >412s