Slug Url土耳其人物

时间:2014-08-26 13:49:44

标签: php regex mod-rewrite

我有一个问题。我正在使用slug url函数为我的SEO友好网址,但我的功能没有发布土耳其字符。

function url_slug($str)
{   
    $str = mb_strtolower( trim( $str ), 'UTF-8' );
    $str = preg_replace('/[^a-zA-Z0-9]/i',' ', $str);
    $str = trim($str);
    $str = preg_replace('/\s+/', '-', $str);
    return $str;
}

例如,当我发布此标题时:şekerli bir öğütücü çok ışıklı bir bahçe

网址向我显示:ekerli-bir-t-c-ok-kl-bir-bah-e

我能在这做什么?有人可以帮我吗?

2 个答案:

答案 0 :(得分:1)

使用正则表达式中的u修饰符使其与UTF-8一起使用。更改以下行:

$str = preg_replace('/[^a-zA-Z0-9]/i',' ', $str);

到此:

$str = preg_replace('/[[:^alnum:]]/iu', ' ', $str);

答案 1 :(得分:0)

将第二行更改为此

$str = preg_replace('/[^a-zA-Z0-9\x{00E7}\x{011F}\x{0131}\x{015F}\x{00F6}\x{00FC}\x{00C7}\x{011E}\x{0130}\x{015E}\x{00D6}\x{00DC}]/u', ' ', $str);

如您所见,新表达式扩展了

下面的土耳其语字符的范围
ç \x{00E7}
ğ \x{011F}
ı \x{0131}
ş \x{015F}
ö \x{00F6}
ü \x{00FC}
Ç \x{00C7}
Ğ \x{011E}
İ \x{0130}
Ş \x{015E}
Ö \x{00D6}
Ü \x{00DC}

预期产出:

sekerli-bir-ögütücü-çok-isikli-bir-bahçe