0

我认为这是 slugify url 的最简单方法。你有什么禁忌症?

function url_clean($str)
{
   $str = iconv('utf-8', 'us-ascii//TRANSLIT', $str);
   $clean_str = preg_replace(array(
      '/\'|\"/',
      '/ /'
   ) , array(
      '',
      '-'
   ) , $str);
   return $clean_str;
}

更新

上面的代码在本地工作得很好,但在服务器上返回字符串?而不是音译字符:árvíztűrő->?rv?zt?r?

phpinfo()在本地主机上

启用 iconv 支持

iconv 实现“libiconv”

iconv 库版本 1.14

phpinfo()在服务器上

启用 iconv 支持

iconv 实现 glibc

iconv 库版本 2.12

4

2 回答 2

1

您以前的功能比响应中的功能要好得多(更多案例)。问题在于语言环境。尝试在函数定义之前添加下一行:

setlocale(LC_ALL, 'es_ES.UTF8');

es_ES是我的语言环境,但你的可能不同)。

于 2014-09-30T16:11:07.937 回答
0

谢谢你!最后,这是我没有那个错误 iconv()的解决方案:

function url_clean($str) {
    $accent = array(' ','ű','á','é','ú','ő','ó','ü','ö','í','Ű','Á','É','Ú','Ő','Ó','Ü','Ö','Í');
    $clean = array('-','u','a','e','u','o','o','u','o','i','U','A','E','U','O','O','U','O','I');
    $str = str_replace($accent, $clean, $str);
    return preg_replace('/[^A-Za-z0-9-.]/', '', $str);
}
于 2013-02-13T23:29:17.470 回答