我有一个问题。我正在使用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
我能在这做什么?有人可以帮我吗?
答案 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