Использую CakePhp (новичок)
кодировка БД - utf8_general_ci
кодировка файлов utf8
Так как в этой сфере лингвисты и филологи не проводили исследований, вынужден писать машинный перевод, т.е. простая подстановка слов, без какого-либо анализа (методик нету).
Все работает и работает хорошо, НО возникла неожиданная проблема с БОЛЬШИМИ буквами...
Вот исходник контроллера
<?php
App::uses('AppController', 'Controller');
class TranslatesController extends AppController {
public $helpers = array('Html', 'Form');
var $name = 'Translates';
function index($source = NULL) {
if($this->request->data != NULL ){ $source = $this->request->data['Translate']['source']; }
if (!empty($source)){
$words = explode(" ", $source);
$unique_words = array_unique($words, SORT_STRING );
unset($words);
if (!empty($unique_words)){
foreach($unique_words as $unique_word){
$cleanWord = $this->cleanWord($unique_word);
$search_word = $this->Translate->findByOriginal($cleanWord);
if(!empty($search_word)){
foreach ($search_word as $word){
$kalmyk_word = $word['translate'];
}
$kalmyk_word = $this->checkWordFirstSymbol($cleanWord, $kalmyk_word);
}else{
$kalmyk_word = $cleanWord;
}
if(!empty($cleanWord)){ $source = str_replace($cleanWord, $kalmyk_word, $source); }
}
}
$this->set('Translate', $source);
}
}
function cleanWord($Word){
$arr = array('.',',','!','@','#','$','%','^','&','*','(',')',
'_','=','+','[',']','{','}',':',';','"','\'',
'...','№','?','<','>','1','2','3','4','5','6',
'7','8','9','0');
foreach ($arr as $symbol){
$Word = str_replace($symbol, "", $Word);
}
return $Word;
}
function checkWordFirstSymbol($Word0, $Word1){
if(!empty($Word0)){
$firstSymbol = substr($Word0,0,2);
if(mb_strtoupper($firstSymbol) == $firstSymbol){
$fs = mb_strtoupper(substr($Word1,0,2),"utf-8");
$Word1 = substr_replace($Word1, $fs, 0, 1);
}
return $Word1;
}
}
}
?>
Суть проблемы в функции checkWordFirstSymbol, которая заменяет регистр буквы в переводе, если это необходимо...
В данном виде я получаю текст типа:
алый Абрикос -> чисм улан Ш�ар өрг
Подскажите как избавиться от �???