Slug Url土耳其字符


Slug Url turkish character

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

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

Url显示:ekerli-bir-t-c-ok-kl-bir-bah-e

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

在正则表达式中使用u修饰符使其能够使用UTF-8。更改以下行:

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

到此:

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

将第二行更改为此

$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