【问题标题】:Convert Æ Ø Å into AE OE AA [duplicate]将ÆØÅ转换为AE OE AA [重复]
【发布时间】:2013-02-16 10:57:39
【问题描述】:

我无法将 æøå 转换为 aeoeaa

我正在尝试使用此功能创建一个对 seo 友好的网址,但它只是删除了 æøå 标志。

我的功能是:

function seo_friendly_url($string, $cid) {
    //Unwanted:  {UPPERCASE} ; / ? : @ & = + $ , . ! ~ * ' ( )
    $string = strtolower($string);
    //Convert ÆØÅ
    $string = str_replace(chr(230), 'ae', $string); 
    $string = str_replace(chr(248), 'oe', $string); 
    $string = str_replace(chr(229), 'aa', $string); 
    //Strip any unwanted characters
    $string = preg_replace("/[^a-z0-9_\s-]/", "", $string);
    //Clean multiple dashes or whitespaces
    $string = preg_replace("/[\s-]+/", " ", $string);
    //Convert whitespaces and underscore to dash
    $string = preg_replace("/[\s_]/", "-", $string);
    return $string;
}

有没有人知道如何解决这个问题。我尝试了很多在网上找到的不同的东西,但似乎没有任何效果。

【问题讨论】:

    标签: php preg-replace special-characters str-replace


    【解决方案1】:

    查看此手册页上的 cmets: http://php.net/manual/en/function.urlencode.php

    也许是这样的:

    function seo_friendly_url($url) {
        $url = strtolower($url);
        $url=str_replace('æ','ae',$url);
        $url=str_replace('ø','oe',$url);
        $url=str_replace('å','aa',$url);    
        return urlencode($url);
    }
    

    会做吗?

    【讨论】:

    • 我试过这个。但似乎这些函数出于某种原因将$url=str_replace('æ','ae',$url); 视为$url=str_replace('?','ae',$url);
    • 确保您在文档中使用了正确的字符集。
    • 我使用 Notepad++,并设置为utf-8 (without BOM)
    • 文档类型也是UTF8吗?如果您在 iso-8859-1 中获取数据并尝试使用 utf8 字符解析它,您将收到此类错误
    猜你喜欢
    • 2015-05-10
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    • 2013-05-28
    • 1970-01-01
    • 2012-09-23
    • 2015-08-06
    相关资源
    最近更新 更多