Php动态Breadcrumb非英文字母编码

时间:2014-02-09 11:48:15

标签: php variables hyperlink navigation breadcrumbs

<?php
function breadcrumbs($home = 'Ana Sayfa') {
//Use RDFa breadcrumb, can also be used for microformats etc.
$bc     =   '';
$isaret = ' &raquo';
//Get the website:
$site   =   'http://'.$_SERVER['HTTP_HOST'];

//Get all vars en skip the empty ones
$crumbs =   array_filter( explode("/",$_SERVER["REQUEST_URI"]) );
//Create the home breadcrumb
$bc    .=   '<li><a href="'.$site.'" rel="v:url" property="v:title">'.$home.''.$isaret.'</a></li>'; 
//Count all not empty breadcrumbs
$nm     =   count($crumbs);
$i      =   1;
//Loop the crumbs
foreach($crumbs as $crumb){
    $link    =  ucfirst( str_replace( array(".php","-","_"), array(""," "," ") ,$crumb) );
    $site   .=  '/'.$crumb;
    //Make the next crumb
    $bc     .=  '<li><a href="'.$site.'" rel="v:url" property="v:title">'.$link.''.$isaret.'</a></li>';
    $i++;
}
$bc .=  '';
//Return the result
return $bc;}

?>

你好

我在我的网站上使用了这个伟大的Php动态bredcrump解决方案,它是一个answer in this post。谢谢你的分享。但我有一个问题;

在我的网站中,我使用的是土耳其语,土耳其语中有7个非英文字母的alphaphet.so当脚本复制地址栏breadcrump只显示英文兼容的字母,不幸的是不是土耳其字母。

问题: 使用此脚本可以创建一个变量,允许在breadcrump菜单中调整和显示创建的链接标题

例如:

地址栏 =

http://www.mamaia.com/tr/urunler/cocuk-uretimi-alcilar

Breadcrump =(应该是)

Ana Sayfa&gt; Tr> Ürünler&gt; ÇocukÜretimiAlçılar

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

1)在<head></head>标签内设置内容编码

<meta charset="utf-8">

2)将其设置在顶部

setlocale(LC_ALL, 'tr_TR.UTF-8')

3)如果仍有问题,请尝试

 echo utf8_encode($your_breadcrumb);

答案 1 :(得分:0)

这是PHP中的两个步骤,它是一种带有二进制字符串的语言:

  1. 获得正确的输入:浏览器使用UTF-8对HTTP请求的请求行中URI的字节进行百分比编码。在PHP引擎解码URI之后,脚本中有一串UTF-8字符,并且因为UTF8是可变长度编码,所以不能使用普通字符串函数(str_replace,{{1}操纵输入时。请改用multibyte versions,并始终提供UTF-8作为编码。

  2. 获得正确的输出。您必须选择适合土耳其的编码:UTF-8是一个选项,但CP1254也适用。在其他任何内容之前输出编码头,然后确保文本的静态部分使用相同的方案进行编码,最后将动态片段从UTF-8转换为目标编码。请注意,链接的ucfirst属性不能包含非ascii字符,因此您必须自己href部分。

  3. 我在线gist,使用rawurlencode处理每个请求只有一个文件。