Переписать с JS на PHP

154
26 октября 2018, 13:10

Всем привет, пишу скрипт грамматически правильного деления слова на слоги. Столкнулся с проблемой, подскажите пожалуйста, как переписать этот 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>

READ ALSO
Добавление записи в бд через форму. php

Добавление записи в бд через форму. php

Выводит что информация занесена в бдНо ее там нету

165
127.0.0.1/phpmyadmin/ не заходит

127.0.0.1/phpmyadmin/ не заходит

Захожу по адресу 1270

215
Добавление элементов в инфоблок Bitrix

Добавление элементов в инфоблок Bitrix

Никак не могу понять как указывать элемент списка у элементаЕсть такой код добавления нового элемента

143
Что такое дискриптор $this-&gt; в php?

Что такое дискриптор $this-> в php?

Что такое дискриптор $this-> в php? Объясните пожалуйста что он делает, где применяеться и какова его суть?

168