2013-04-05 3 views
0

Символы Unicode, хранятся в базе данных MySQL в этом форматеКак получить подстроку символов Юникода из MySQL с помощью PHP

یہاں تو 

Там нет только юникод символов в моей базе данных по также HTML и английские символы вперемешку.

Проблема, я хочу, чтобы получить часть строки из поля базы данных 'post_body' Я использовал следующий SQL-запрос

"SELECT SUBSTRING(post_body,1,120) as pst_body from mytable"; 

Эта строка дает мне обратно 120 символов точно. Но проблема в том, что в базе данных есть символы Unicode, а затем ی is equal to 1 unicode character, поэтому мое требование не выполняется таким образом. Есть ли какая-либо функция, которая может вернуть мне указанное количество символов, независимо от того, является ли это символом Юникода или английским символом, если есть данные в Юникоде, он должен считать ی в качестве одного символа.

+0

Попробуйте 'SET NAMES 'utf8'' перед этим запросом. – 2013-04-05 12:35:06

ответ

0

Я не думаю, что в mysql есть какой-либо вариант, вы можете получить данные из mysql, а затем принять действие в PHP.

function getSubstring($string, $number){ 

    $keywords = preg_split("/([&])+/", htmlentities($string)); 
    $finalArray = array(); 
    unset($keywords[0]); 

    for($index = 1;$index <= $number;$index++){ 
     $finalArray[] = $keywords[$index]; 
    } 
    return str_replace('amp;', '&', implode('', $finalArray)); 
} 

//$string = &#1740;&#1729;&#1575;&#1722; &#1578;&#1608; 
//$number = 10;// number of character to be fetch 
echo getSubstring($string,10);