lony 发表于 2008-3-7 00:08:44

[1.6.1]CI重写url_helper 中url_title 替换 西方语言特殊字符补丁

因为欧洲 字符中有很多特殊字符(非英文)如 上面带一撇的e:é 等等(地址栏不完全支持,就像IE7才支持中文一样),CI自己的url_title 的时候,把这些字符全部去掉了,严重影响了 google的搜索,嘿嘿,所以,我们必须把他们替换成一般浏览器 地址栏支持的字符。

1. 在application/helper下创建 MY_url_helper.php
2.复制 CI库中的 url_title() 函数 到上面的文件。(包括if (! function_exists('url_title')) 正个if)
3.添加2 个替换数组(关键,虽然不理解,从公司法国技术部小伙子那问到的)
$str = strtr($str,"\xA1\xAA\xBA\xBF\xC0\xC1\xC2\xC3\xC5\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD8\xD9\xDA\xDB\xDD\xE0\xE1\xE2\xE3\xE5\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF8\xF9\xFA\xFB\xFD\xFF","!ao?AAAAACEEEEIIIIDNOOOOOUUUYaaaaaceeeeiiiidnooooouuuyy");
   $str = strtr($str, array("\xC4"=>"Ae", "\xC6"=>"AE", "\xD6"=>"Oe", "\xDC"=>"Ue", "\xDE"=>"TH", "\xDF"=>"ss", "\xE4"=>"ae", "\xE6"=>"ae", "\xF6"=>"oe", "\xFC"=>"ue", "\xFE"=>"th"));
OK.完成。application/helper/MY_url_helper.php正个文件如下
<?php
// url_title function with muti-language by lony.
if (! function_exists('url_title'))
{
function url_title($str, $separator = 'dash')
{
   
    $str = strtr($str,"\xA1\xAA\xBA\xBF\xC0\xC1\xC2\xC3\xC5\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD8\xD9\xDA\xDB\xDD\xE0\xE1\xE2\xE3\xE5\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF8\xF9\xFA\xFB\xFD\xFF","!ao?AAAAACEEEEIIIIDNOOOOOUUUYaaaaaceeeeiiiidnooooouuuyy");
   $str = strtr($str, array("\xC4"=>"Ae", "\xC6"=>"AE", "\xD6"=>"Oe", "\xDC"=>"Ue", "\xDE"=>"TH", "\xDF"=>"ss", "\xE4"=>"ae", "\xE6"=>"ae", "\xF6"=>"oe", "\xFC"=>"ue", "\xFE"=>"th"));
   
   
if ($separator == 'dash')
{
   $search= '_';
   $replace = '-';
}
else
{
   $search= '-';
   $replace = '_';
}

$trans = array(
      $search      => $replace,
      "\s+"      => $replace,
      "[^a-z0-9".$replace."]"    => '',
      $replace."+"      => $replace,
      $replace."$"      => '',
      "^".$replace      => ''
      );
$str = strip_tags(strtolower($str));

foreach ($trans as $key => $val)
{
   $str = preg_replace("#".$key."#", $val, $str);
}

return trim(stripslashes($str));
}
}
?>

上次发了一次,好像数据丢咯~~再不上~~

Hex 发表于 2008-3-7 09:28:16

上次是因为服务器升级造成的丢失,我向你表示歉意。

xhq6632 发表于 2008-3-24 09:56:35

太感谢了,方便大家了啊
页: [1]
查看完整版本: [1.6.1]CI重写url_helper 中url_title 替换 西方语言特殊字符补丁