在PHP中使用外来字符的SEO友好URL

时间:2012-12-09 14:41:02

标签: php url encoding utf-8 seo

我将一些用户提供的内容放在我的网址中以供搜索引擎优化,使用此代码进行清理:

/**
* Create URL friendly strings or filenames
* @param type $str
* @param type $replace
* @param type $delimiter
* @return type
*/
public static function toAscii($str, $replace=array(), $delimiter='-') {
  if(!empty($replace)) {
    $str = str_replace((array)$replace, ' ', $str);
  }
  $clean = iconv('UTF-8', 'ASCII//TRANSLIT', $str);
  $clean = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $clean);
  $clean = strtolower(trim($clean, '-'));
  $clean = preg_replace("/[\/_|+ -]+/", $delimiter, $clean);
  return $clean;
}

然而,我发现这还不够。一篇带有一些希伯来字符的文章给了我:

  

iconv():检测到输入字符串中的非法字符

是否有一个银弹功能可以安全地将字符串变成漂亮的URL?至少我希望它不会崩溃。然后,如果URL仍然看起来很好并且SEO友好,那就太好了。

今天是希伯来语,但明天可能是俄语,中文,克林贡语......

1 个答案:

答案 0 :(得分:2)

看看这个功能,它适用于俄语,乌克兰语,土耳其语,波兰语,拉脱维亚语,希腊语和拉丁语:

http://iamseanmurphy.com/creating-seo-friendly-urls-in-php-with-url-slug/