Достаточно для анализа 10 символов чтобы делать правильное окончание.
Метод на ruby:
def spelling(number) last_digit = number.to_s.split(//).last(1).join # identify last digit spell = "" if last_digit == "1" spell = "а" if last_digit =~ /^([2-4])$/ spell = "ов" if last_digit =~ /^([0]|[5-9])$/ two_last_digit = number.to_s.split(//).last(2).join # identify last two digit spell = "ов" if two_last_digit =~ /^([1][1-9])$/ spell end puts "Вы можете подписаться еще на <count> объект#{spelling(<count>)}"
Метод на php – не очень грамотно написан (лучше array и сопоставление, regexp как в случае с ruby или ifelse), но рабочий:
function spelling($number) { $splitted_array = str_split("$number"); $last_digit = end($splitted_array); $penultimate = prev($splitted_array); if ($penultimate == "1") {return "ов";} if ($last_digit == "1") {return "";} if ($last_digit == "2") {return "а";} if ($last_digit == "3") {return "а";} if ($last_digit == "4") {return "а";} if ($last_digit == "0") {return "ов";} if ($last_digit == "5") {return "ов";} if ($last_digit == "6") {return "ов";} if ($last_digit == "7") {return "ов";} if ($last_digit == "8") {return "ов";} if ($last_digit == "9") {return "ов";} } $spell = spelling($res_users); echo "Влияние: $res_users клиент$spell";