Php动态Breadcrumb非英语字母编码


<?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解决方案,这是本文的答案。感谢您的分享。但我有一个问题;

在我的网站上,我使用的是土耳其语,土耳其文的字母表中有7个非英语字母。所以当脚本复制时,地址栏breadcrump只显示英语兼容的字母,不幸的是,没有土耳其音字母。

问题是:有了这个脚本,就有可能创建一个变量,允许在面包屑菜单中调整和显示创建的链接的标题

例如:

地址栏=

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

面包屑=(应该是)

Ana Sayfa>Tr>Ürünler>ÇocukÜretimi Alçılar

有什么建议吗?

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

<meta charset="utf-8">

2) 将此设置在顶部

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

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

echo utf8_encode($your_breadcrumb);

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

  1. 正确输入:浏览器使用UTF-8对HTTP请求的请求行中URI的字节进行百分比编码。PHP引擎解码URI后,您的脚本中有一个UTF-8字符字符串,并且由于UTF8是可变长度编码,因此在处理输入时不能使用纯字符串函数(str_replaceucfirst)。请改用多字节版本,并始终提供UTF-8作为编码。

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

我在网上发布了一个要点,使用mod_rewrite用一个文件处理每个请求。

相关内容

  • 没有找到相关文章

最新更新