Распознание регистра в php

224
29 августа 2018, 23:40

В сети нашел синонимайзер на php, но он не учитывает регистр букв. Подскажите как заставить его распознавать автоматически регистр букв.

В данном случае слово "Мобильный" заменяется низким регистром, а желательно с большим регистром так как заменяемое слово идет с большим регистром.

function _strtr($str,$repl_array){
  $keys = array_map(function($key){
                  return '#'.$key.'#ui';
               },array_keys($repl_array));
  $values = array_values($repl_array);
  $values = array_map(function($value){
                  $variants = explode('|', $value);
                  return $variants[rand(0, count($variants) - 1)];
               },array_values($repl_array));
  return preg_replace($keys,$values,$str);
}
echo _strtr('Мобильный телефон Samsung обменяю на новый iphone',
  array(
     'мобильный'=>'сотовый'
   )
);
Answer 1

Как вариант:

return '#'.$key.'#ui';

Заменить на:

return '#'.$key.'#u';

И отправлять такой массив:

echo _strtr('Мобильный телефон Samsung обменяю на новый iphone', array(
    'мобильный' => 'сотовый',
    'Мобильный' => 'Сотовый',
        )
);

Все остальное будут уже костыли

READ ALSO
Где лежит вёрстка NavBar в Yii2?

Где лежит вёрстка NavBar в Yii2?

У меня на сайте на Yii2 вверху есть меню которое реализуется компонентом NavBar

238
Не могу слить 2 массива в один

Не могу слить 2 массива в один

никак не могу объединить 2 массива в 1, массивы формируются из базы mysql, array_merge не помог

213
Особенности перехода с Smarty 2 на Smarty 3 (mysmarty.class.php)

Особенности перехода с Smarty 2 на Smarty 3 (mysmarty.class.php)

Всем привет, меняю "движок" те

239