【问题标题】:Slug Url turkish characterSlug Url 土耳其字符
【发布时间】:2014-08-26 13:49:43
【问题描述】:

我有一个问题。我正在为我的 SEO 友好 url 使用 slug 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

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

我可以在这里做什么?任何人都可以在这里帮助我吗?

【问题讨论】:

    标签: php regex mod-rewrite


    【解决方案1】:

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

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

    到这里:

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

    【讨论】:

    • @Jilet 应该有变化。请重试。
    • 是的,它已更改,但 url 表示如下:在此服务器上找不到请求的 URL /susa/şçöi-ü-ı-ğüşüı
    • @Jilet 你确定页面的编码是UTF-8吗?
    • 是的,我确定我的页面是:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    • @Jilet 这是给你的DEMO
    【解决方案2】:

    把你的第二行改成这个

    $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
    

    【讨论】:

      猜你喜欢
      • 2012-05-13
      • 1970-01-01
      • 1970-01-01
      • 2015-01-07
      • 2016-10-09
      • 2020-10-02
      • 2018-08-03
      • 1970-01-01
      • 2014-07-25
      相关资源
      最近更新 更多