Счётчик слогов

Тема в разделе "Joomla", создана пользователем irina_kiseleva, 8 июл 2016.

  1. irina_kiseleva

    irina_kiseleva

    Регистрация:
    8 июл 2016
    Сообщения:
    4
    Симпатии:
    0
    Здравствуйте!
    Мы хотим установить на сайт счётчик слогов: программу, которая считает количество слогов в строках. Может быть, есть какие-то готовые модули? Совершенно точно эту программу можно скачать себе на компьютер из интернета, их там очень много. А как её прикрутить на сайт? Подскажите, пожалуйста.
     
  2. chukcha

    chukcha

    Регистрация:
    9 окт 2014
    Сообщения:
    283
    Симпатии:
    85
    И куда вы хотите вставить?

    В каких частях речи вы хотите считать слоги

    предлог "на" - это слог? а предлог "в" ? Или только там где есть гласные?
    --- Добавлено, 9 июл 2016 ---
    Я пошел во двор (5)
    Положил на траву топор (8)
    Уехал в Тверь (4)
    Теперь я зверь (4)
     
  3. irina_kiseleva

    irina_kiseleva

    Регистрация:
    8 июл 2016
    Сообщения:
    4
    Симпатии:
    0
    chukcha, во всех частях речи. Везде, где есть гласные. Соответстенно, предлог "на" - это слог, т.к. в нём есть одна гласная, а предлог "в" - это не слог, т.к. гласной в нём нет. В сущности, название "счётчик слогов" можно смело переименовать в "счётчик гласных".
    "И куда вы хотите вставить?" - хотим добавить пункт с названием "счётчик слогов" в меню. При нажатии на этот пункт должна открываться страница, где и будет находиться сам счётчик.
    Вот как должна примерно выглядеть эта страница:
    [​IMG]
     
  4. irina_kiseleva

    irina_kiseleva

    Регистрация:
    8 июл 2016
    Сообщения:
    4
    Симпатии:
    0
    Мы нашли скрипт, который считает количество гласных в строке.
    Вот этот скрипт:
    Код:
    function Calculate( text, res, result ) {
        var strings = text.split( "\n" );
        var i = 0;
        while ( i < strings.length ) {
            var line = strings[ i ++ ];
            var s = line.replace( / \s / g, '' ).toLowerCase( );
            if ( s.length == 0 ) {
                result.AddNewRecord( );
                continue;
            }
            var letters = 0;
            for ( var j = 0;
            j < res.str.length;
            ++ j ) {
                var ch = res.str.charAt( j );
                for ( var k = 0;
                k < s.length;
                ++ k ) {
                    if ( s.charAt( k ) == ch ) {
                        ++ letters;
                    }
                }
            }
            var row = result.AddNewRecord( );
            row.str = line;
            row.num = letters;
        }
    }
    Подскажите, пожалуйста, подойдёт ли он для Joomla? Можно ли его как-то использовать для создания модуля счётчика слогов (гласных)? Можем ли мы этот скрипт использовать в php-файле модуля?
     
  5. chukcha

    chukcha

    Регистрация:
    9 окт 2014
    Сообщения:
    283
    Симпатии:
    85
    это не php скрипт, а js
    нет класса result со своими методами
    Нет списка гласных


    Я думаю, что вам проще вместить js скрипт на страницу, чем писать отдельный модуль на php
    Но можно и отдельный модуль, основанный обработке ajax
     
  6. irina_kiseleva

    irina_kiseleva

    Регистрация:
    8 июл 2016
    Сообщения:
    4
    Симпатии:
    0
    chukcha, спасибо.
    Мы решили делать модуль, который будет считать количество гласных букв в задаваемом русскоязычном тексте.
    Вот функция, с помощью которой будет производиться подсчёт гласных:

    Код:
    function slog_count($string = '') {
        $result = 0;
        $glas = 'ауыеоэюияё';
        $interenc = mb_internal_encoding();
        $gls_enc = mb_convert_encoding($glas, $interenc);
        $str_enc = mb_convert_encoding($string, $interenc);
        $lower = mb_strtolower($str_enc, $interenc);
        $str_len = mb_strlen($lower);
        $glas_len = mb_strlen($gls_enc);
        for ($i = 0; $i < $str_len; ++$i) {
            $orig = mb_substr($lower, $i, 1, $interenc);
            for ($j = 0; $j < $glas_len; $j++) {
                $gls = mb_substr($gls_enc, $j, 1, $interenc);
                if ($orig == $gls) {
                    ++$result;
                }
            }
        }
        return $result;
    }
    Посмотрите, пожалуйста, она подойдёт?