Всем привет, пишу скрипт грамматически правильного деления слова на слоги. Столкнулся с проблемой, подскажите пожалуйста, как переписать этот JS код на PHP?
var vowel = new String('аеёиоуыэюя'); // Гласные буквы
var voiced = new String('бвгджзлмнрхцчшщ'); // Звонкие и шипящие согласные
var deaf = new String('кпстф'); // Глухие согласные
var brief = new String('й'); // Й
var other = new String('ьъ'); // Другие
var cons = new String('бвгджзйклмнпрстфхцчшщ'); // Все согласные
// Валидация правильности введенной строки
function validateString(s) {
// Поленился делать :)
return s;
} // function validateString (s)
// Есть ли в строке гласные?
function isNotLastSep(remainStr) {
var is = false;
for (var i = 0; i < remainStr.length; i++) {
if (vowel.indexOf(remainStr.substr(i, 1)) != -1) {
is = true;
break;
}
} // for (var i = 0; i < remainStr - 1; i++)
return is;
} // function isLastSep (remainStr)
// Собственно функция разбиения слова на слоги
function getSeparatedString(s) {
// Добавляем слог в массив и начинаем новый слог
function addSep() {
sepArr.push(tmpS);
tmpS = '';
} // function addSep ()
s = validateString(s);
var tmpL = new String(); // Текущий символ
var tmpS = new String(); // Текущий слог
var sepArr = new Array(); // Массив слогов
for (var i = 0; i < s.length; i++) {
tmpL = s.substr(i, 1);
tmpS += tmpL;
// Проверка на признаки конца слогов
// если буква равна 'й' и она не первая и не последняя и это не последний слог
if (
(i != 0) &&
(i != s.length - 1) &&
(brief.indexOf(tmpL) != -1) &&
(isNotLastSep(s.substr(i + 1, s.length - i + 1)))
) {
addSep();
continue;
}
// если текущая гласная и следующая тоже гласная
if (
(i < s.length - 1) &&
(vowel.indexOf(tmpL) != -1) &&
(vowel.indexOf(s.substr(i + 1, 1)) != -1)
) {
addSep();
continue;
}
// если текущая гласная, следующая согласная, а после неё гласная
if (
(i < s.length - 2) &&
(vowel.indexOf(tmpL) != -1) &&
(cons.indexOf(s.substr(i + 1, 1)) != -1) &&
(vowel.indexOf(s.substr(i + 2, 1)) != -1)
) {
addSep();
continue;
}
// если текущая гласная, следующая глухая согласная, а после согласная и это не последний слог
if (
(i < s.length - 2) &&
(vowel.indexOf(tmpL) != -1) &&
(deaf.indexOf(s.substr(i + 1, 1)) != -1) &&
(cons.indexOf(s.substr(i + 2, 1)) != -1) &&
(isNotLastSep(s.substr(i + 1, s.length - i + 1)))
) {
addSep();
continue;
}
// если текущая звонкая или шипящая согласная, перед ней гласная, следующая не гласная и не другая, и это не последний слог
if (
(i > 0) &&
(i < s.length - 1) &&
(voiced.indexOf(tmpL) != -1) &&
(vowel.indexOf(s.substr(i - 1, 1)) != -1) &&
(vowel.indexOf(s.substr(i + 1, 1)) == -1) &&
(other.indexOf(s.substr(i + 1, 1)) == -1) &&
(isNotLastSep(s.substr(i + 1, s.length - i + 1)))
) {
addSep();
continue;
}
// если текущая другая, а следующая не гласная если это первый слог
if (
(i < s.length - 1) &&
(other.indexOf(tmpL) != -1) &&
((vowel.indexOf(s.substr(i + 1, 1)) == -1) ||
(isNotLastSep(s.substr(0, i))))
) {
addSep();
continue;
}
} // for (var i = 0; i < s.length; i++)
sepArr.push(tmpS);
return sepArr.join('-');
} // function getSeparatedString (s)
<form>
<input type="text" size="30" name="fromString" value="">
<input type="button" value="Go!" onClick="document.forms[0].elements[2].value = getSeparatedString (document.forms[0].elements[0].value);">
<br>
<input type="text" size="30" name="toString" value="">
</form>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Никак не могу понять как указывать элемент списка у элементаЕсть такой код добавления нового элемента
Что такое дискриптор $this-> в php? Объясните пожалуйста что он делает, где применяеться и какова его суть?