У меня есть несколько сломанных заголовков, где каждая буква всегда разделена одним пробелом или более.Слова в этих заголовках разделены на большее количество пробелов, чем каждая буква, но количество пробелов варьируется.
Вот несколько примеров названий (знак минус обозначает пробел).
"H-E-L-L-O--W-O-R-L-D"
"H--E--L--L--O----W--O--R--L--D"
"H--E--L-L--O---W--O--R--L--D----A-N-D----G-O-O--D-B--Y-E"
"Y--O--U----A--R--E----W-O-N--D-E-R-F-U--L"
Я хочу исправить эти заголовки, но все мои решения до сих пор были слишком сложными.Такое ощущение, что это должен быть простой вопрос.
Любые решения?
РЕДАКТИРОВАТЬ: Это решение, которое я выбрал в конце, который основан на среднем,
function filterSpacesBetweenLetters($str)
{
if (preg_match_all('/ +/', $str, $matches)) {
$lengthValues = array_map('strlen', $matches[0]);
$countValues = array_count_values($lengthValues);
$average = array_sum(array_keys($countValues)) / count($countValues);
$minLength = ceil($average);
$words = preg_split('/ {' . $minLength . ',}/', $str);
$words = array_map(function ($str) {
return str_replace(' ', '', $str);
}, $words);
return implode(' ', $words);
}
return $str;
}