2014-01-31 2 views
0

않는 str_replace를 배열로 SQL에서 키릴 데이터를 끌어와 사용할 수 있습니다. 우선은어떻게 코드를()

$db = &JFactory::getDBO(); 
$db->setQuery('SELECT `oldword`, `newword` FROM `#_words`'); 
// and what is next, what about mysql_fetch_assoc ? 

그리고처럼 뭔가의 Joomla API 즉 사용을위한 변환 할 필요 둘째, oldword과를 NewWord가 작동 영어하지만 키릴 경우 그렇지 않은 경우. 어떻게 해결할 수 있습니까? 나는이 시도 :

function fixEncoding($s, $encoding = 'UTF-8') { 
$s = @iconv('UTF-16', $encoding . '//IGNORE', iconv($encoding, 'UTF-16//IGNORE', $s)); 
return str_replace("\xEF\xBB\xBF", '', $s); 
} 
$find = fixEncoding($find); 
$replace = fixEncoding($replace); 

하지만이 기능은 하나의 문자열로 작동하고 배열 작동하지 않습니다

답변

1

내가하지만 데이터베이스 쿼리에 관해서는, 키릴 문제에 대한 몇 가지 테스트를 수행해야 줌라 코딩 표준을 사용하여, 그것은 다음과 같이 표시됩니다

$db = JFactory::getDbo(); 

$query = $db->getQuery(true); 
$query->select($db->quoteName(array('oldword', 'newword'))) 
     ->from($db->quoteName('#__words')); 
$db->setQuery($query); 

$results = $db->loadAssocList(); 
$find = array(); 
$replace = array(); 

foreach ($results as $row) { 
    $find[] = $row->oldword; 
    $replace[] = $row->newword; 
} 
$oldstring = 'Some text'; 
$newstring = str_replace($find, $replace, $oldstring); 
echo $newstring; 
+0

@jumlancer이 - 내 업데이트 된 대답 같이'foreach' 루프를 사용) – Lodder

+0

@jumlancer를 - 내 대답을 업데이 트했습니다. 그것이 작동하는지 나에게 알려주세요 – Lodder

+0

로더 - 고마워요! 그것은 작동하지만 한 번 $ row-> oldword (및 newword)를 $ row [ 'oldword']로 변경했습니다. 왜냐하면 그것이 ObjectList가 아니라 AssocList이기 때문입니다. 당신이 말했듯이, 키릴 문자에 대한 문제는 더 이상 없습니다. – stckvrw