1 2 3 4 5 6 7 8 9 10 11 12 13 | <code> function str_emoji( $dir , $str ){
if ( $dir ){
$str =json_encode( $str );
$str =preg_replace( '#(\\\ud[0-9a-f]{3}|\\\u2(6|7)[0-9a-f]{2})#ie' , 'addslashes("\\1")' , $str );
$str =json_decode( $str );
} else {
$str =preg_replace( '#(u[0-9a-f]{4}u[0-9a-f]{4})#ie' , 'iconv("UCS-2","UTF-8",pack("H4","\\1"))' , $str );
}
return $str ;
};</code>
|
Nach dem Login kopieren
Nach dem Login kopieren
1 2 | <code>
$content =str_emoji(true, $content );</code>
|
Nach dem Login kopieren
Nach dem Login kopieren
1 2 | <code>
$content =str_emoji(false, $content );</code>
|
Nach dem Login kopieren
Nach dem Login kopieren
下面问题来了。
iconv("UCS-2","UTF-8",pack("H4","\\1")) 不能将二进制专程UTF-8,怎么破????
另:数据库版本不能直接存储emoji,升级数据库是肯定不可行的方案。
参考文章:http://blog.mc-zone.me/article/322
回复内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <code> function str_emoji( $dir , $str ){
if ( $dir ){
$str =json_encode( $str );
$str =preg_replace( '#(\\\ud[0-9a-f]{3}|\\\u2(6|7)[0-9a-f]{2})#ie' , 'addslashes("\\1")' , $str );
$str =json_decode( $str );
} else {
$str =preg_replace( '#(u[0-9a-f]{4}u[0-9a-f]{4})#ie' , 'iconv("UCS-2","UTF-8",pack("H4","\\1"))' , $str );
}
return $str ;
};</code>
|
Nach dem Login kopieren
Nach dem Login kopieren
1 2 | <code>
$content =str_emoji(true, $content );</code>
|
Nach dem Login kopieren
Nach dem Login kopieren
1 2 | <code>
$content =str_emoji(false, $content );</code>
|
Nach dem Login kopieren
Nach dem Login kopieren
下面问题来了。
iconv("UCS-2","UTF-8",pack("H4","\\1")) 不能将二进制专程UTF-8,怎么破????
另:数据库版本不能直接存储emoji,升级数据库是肯定不可行的方案。
参考文章:http://blog.mc-zone.me/article/322
存数据库的时候 base_encode64()
取得的时候base_decode64()
mysql编码选择utf8mb4即可
数据库是mysql吧,把数据库和字段编码设置为utf8mb4,可以直接保存表情字符