[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Замена цифр в тексте числительными
kan141290
Здравствуйте!
Помогите пожалуйста со скриптом. Нужно заменить чичла в тексте числительными. (например "21" заменить на "двадцать один")

Массивы, содержащие числительные
	$mas = array( "ноль", "один", "два", "три", "четыре", "пять", "шесть", "семь", 
"восемь", "девять", "десять" );
$mas1 = array( "десять", "одиннадцать", "двенадцать", "тринадцать",
"четырнадцать","пятнадцать", "шестнадцать", "семнадцать", "восемнадцать",
"девятнадцать" );
$mas2 = array("двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят",
"семьдесят", "восемьдесят", "девяносто");
$mas3 = array("сто","двести", "триста", "четыреста", "пятьсот", "шестьсот",
"семьсот", "восемьот", "девятьсот");
$mas4 = array( "ноль", "одна", "две", "три", "четыре", "пять", "шесть", "семь",
"восемь", "девять", "десять");
$mas5 = array( "тысяча", "тысячи", "тысяч");


Функции, преобразующие числа в числительные
function m1(int $chislo) //0-10
{
return $mas[$chislo];
}

function m2(int $chislo) //11-20
{
return $mas1[$chislo%10];
}

function m3(int $chislo) //21-99
{
$buf = intval($chislo%10);
$chislo /= 10;
return $mas2[intval($chislo - 2)] . ' ' . $mas[$buf];
}

function m4(int $chislo) //100-999
{
$buf = intval($chislo%10);
$chislo1 = $chislo / 10 %10;
$chislo /= 100;
return $mas3[intval($chislo - 1)] . ' ' . $mas2[intval($chislo1 - 2)] . ' ' . $mas[$buf];
}

function m(int $chislo) //функция, котроая выбирает число по его типу
{
if($chislo >= 0 && $chislo < 10)
return m1($chislo);
if($chislo >= 10 && $chislo < 20)
return m2($chislo);
if($chislo >= 20 && $chislo < 100)
return m3($chislo);
if($chislo >= 100 && $chislo < 1000)
return m4($chislo);
}


Исходная строка находится в переменной $chislo

Осталось только сделать только поиск числа и вызов соответствующей функции преобразования. Но не понимаю, как это сделать. Если можете, то объясните пожалуйста.
Заранее спсибо!



Спустя 24 минуты (19.12.2009 - 21:04) qpayct написал(а):
вот. дерзай wink.gif
$chislo="111";
for($i=0;$i<strlen($chislo);$i++) {
$n[$i]=$chislo[$i];
for($j=$i+1;$j<strlen($chislo);$j++) {
$n[$i].="0";
}
echo $n[$i]."<br/>";
}

Спустя 22 минуты, 51 секунда (19.12.2009 - 21:27) kan141290 написал(а):
qpayct
Не понял, что данный код делает.
Мне нужно следующее: дан текст в переменной $chislo, нужно найти в нём числа и заменить словами.
Например:
$chislo="У Коли было 25 яблок";

В результате на экран должно быть выведено "У Коли было двадцать пять яблок"

Спустя 44 минуты, 34 секунды (19.12.2009 - 22:11) qpayct написал(а):
я думал ты подсказку просил, а не чтоб за тебя всё делали smile.gif
$text="У Коли было 25 яблок";
// ищешь в строке число и присваиваешь переменной $chislo
for($i=0;$i<strlen($chislo);$i++) {
$n[$i]=$chislo[$i];
for($j=$i+1;$j<strlen($chislo);$j++) {
$n[$i].="0";
}
$str.=m($n[$i])." ";
}
// заменяешь найденное число на $str

дорабатывай сам идею я тебе дал
THE END!

Спустя 12 часов, 17 минут, 57 секунд (20.12.2009 - 10:29) kan141290 написал(а):
Спасибо!

Спустя 5 часов, 4 минуты, 29 секунд (20.12.2009 - 15:34) waldicom написал(а):
Ага... И получите на выходе "... двадцать один яблок", "тридцать рубля" и прочее

Спустя 8 часов, 55 минут, 1 секунда (21.12.2009 - 00:29) qpayct написал(а):
ну можно при желании в класс добавить ещё и массивы правильных окончаний wink.gif дело хозяйское
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.