列出类别的第一个字母-按特殊字符发布(丹麦字母)

时间:2014-03-13 作者:Pemmi

我有一个按字母顺序排列的自定义分类法(主题)列表,所有分类法都按索引字母a、B、C等进行分组。该列表使用“主题”的第一个字母,显示为每个字母组的索引字母。

字母组工作得很好,但当它显示丹麦字母Æ、Ø和Å时,我会得到错误的字母,如� 而不是Å。I数据库设置为utf8\\u danish\\u ci,wp config也设置为utf8\\u danish\\u ci。php

我真的不知道如何控制$字母来显示ÆØÅ。非常感谢您的帮助:)

enter link description here

使用的代码:

<?php $list = \'\'; 
$tags = get_terms( \'topic\' ); 
$groups = array();
if( $tags && is_array( $tags ) ) {
foreach( $tags as $tag ) {
$first_letter = strtoupper( $tag->name[0] );
$groups[ $first_letter ][] = $tag;}
if( !empty( $groups ) ) {
foreach( $groups as $letter => $tags ) {
$list .= "\\n\\t" . \'<div id="index-letter"><h2>\' . apply_filters( \'the_title\', $letter ) .\'</h2></div>\';
$list .= "\\n\\t" . \'<ul>\';
foreach( $tags as $tag ) {
$lower = strtolower($tag->name);
$name = str_replace(\' \', \' \', $tag->name);
$naam = str_replace(\' \', \'-\', $lower);
$list .= "\\n\\t\\t" . \'<li><a href="/topic/\'.$naam.\'">\'.$name.\'</a></li>\';
}}}}else $list .= "\\n\\t" . \'<p>Beklager, men ingen emner blev fundet</p>\';print $list;
echo "</ul>";
?>

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

使用Multibyte String functions, 在这种情况下mb_strtoupper().

这是一条一般规则:在WordPress中,输出通常以UTF-8编码。避免使用单字节函数,如strlen(), substr() 当有更好的mb_* 作用

结束