@coderiter

Как разделить строку на символы с учётом ударений?

Здравствуйте! Подскажите, пожалуйста, как разбить строку посимвольно в массив, но так, чтобы ударения (например, оди́н) в массиве не лежали отдельным символом, а оставались с буквой?

Сейчас работает так, но ударения считаются отдельным символом.
$arrayLetters = preg_split('//u', $string, NULL, PREG_SPLIT_NO_EMPTY);
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
sankooo
@sankooo
Software Engineer
Можно пройтись по массиву и объединить символ ударения с предыдущим символом.
$arrayLetters = preg_split('//u', "оди́н", NULL, PREG_SPLIT_NO_EMPTY);
$arrayLettersResult = [];
$stressSym = "́";

foreach ($arrayLetters as $i => $letter) {
    if ($letter == $stressSym) continue;
    if (!empty($arrayLetters[$i + 1]) && $arrayLetters[$i + 1] == $stressSym) {
        $arrayLettersResult[] = $letter . $stressSym;
    } else {
        $arrayLettersResult[] = $letter;
    }
}

var_dump($arrayLettersResult);

/*
array(4) {
  [0]=>
  string(2) "о"
  [1]=>
  string(2) "д"
  [2]=>
  string(4) "и́"
  [3]=>
  string(2) "н"
}
*/
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
glaphire
@glaphire Куратор тега PHP
PHP developer
Вроде обычный \s решает проблему)
https://www.phpliveregex.com/p/uaC
preg_split('/\s/u', $input_line);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы