<?php
error_reporting(-1);
mb_internal_encoding('utf-8');

$test = <<<'EOF'
анон тестировал testiroval da оп_хуй как-то $op_hui $mamkuEbal
EOF;

/**
 * Ну нихуя себе, пхпдок!
 * @param string $text текст который будем парсить
 * @return array|false результат в формате 'wordsNumber'=>количество слов,	
 * 'words'=>$result , где результ в формате слово=Ю количество вхождений, 
 * либо фолс если что-то пошло не так
 */
function countWords($text) {
	if(!is_string($text) || empty($text)){
		return false;
	}
	
	$textToLower = mb_strtolower($text);
	$wordRegexp = "/[а-яa-zё\-]+/ui";
	$count = preg_match_all($wordRegexp, $textToLower, $pregResult);
	$words = $pregResult[0];
	
	$result = [];
	foreach($words as $word) {
		if (isset($result[$word])) {
			$result[$word]++;
		} else {
			$result[$word] = 1;
		}
	}		
	
	arsort($result);
	return [
		'wordsNumber'=>$count,
		'words'=>$result
		];
}

$parsedText = countWords($test);
if(!$parsedText){
	echo "Сасай";
}else{
	echo "Всего слов в тексте - {$parsedText['wordsNumber']}".PHP_EOL;
	foreach ($parsedText['words'] as $word => $occurrence) {
		echo "$word -  встречается $occurrence раз".PHP_EOL;
	}
}


	