【问题标题】:PHP - UTF8 to basic encoding alterationPHP - UTF8 到基本编码更改
【发布时间】:2015-04-24 12:00:48
【问题描述】:

所以我正在尝试将 á、é 等拉丁字符转换为其非拉丁音译(a、e 等)。我知道有以下内容: PHP replacing special characters like à->a, è->e

但他们似乎都没有帮助......这是我所拥有的以及他们产生的结果。

echo $this->data['last_name'];
$last_name = iconv('UTF-8', 'ISO-8859-1//TRANSLIT//IGNORE', $this->data['last_name']);
echo $last_name;
$last_name = mb_convert_encoding($this->data['last_name'], 'ISO-8859-1');
echo $last_name;
$last_name = iconv('UTF-8', 'ascii//TRANSLIT//IGNORE', $this->data['last_name']);
echo $last_name;

-----

Dérmenjian
D�rmenjian
D�rmenjian
D?rmenjian

知道我做错了什么以及如何解决它吗?我总是可以做一个庞大的数组,但我更喜欢用编程方法来解决这个问题......

(不确定是否有区别,但我们使用的是 php 5.5)

【问题讨论】:

    标签: php encoding utf-8 character-encoding php-5.5


    【解决方案1】:

    原来的解决方案是语言环境设置不正确。根据: http://php.net/manual/en/function.iconv.php#74101 我的服务器上的默认值为 C,所以通过执行以下操作,我让它工作:

    setlocale(LC_ALL,'en_US.UTF8');
    

    我之前尝试过“en_US”,但失败了。

    【讨论】:

      【解决方案2】:

      或者你只是使用:

      str_replace(array("á", "é"), array("a", "e"), $subject);
      

      【讨论】:

      • 我认为您错过了我以编程方式所说的部分。我可以很容易地做一个巨大的数组,但是我必须坐在那里,把每一个非 ascii 字符都拿出来,然后做一些巨大的数组。这不仅会让人头疼(我怎么知道我没有错过一个?),而且因为它是一个人做的,非常容易出错(如果我做错了怎么办?)。因此,为什么我以编程方式询问。 =)
      【解决方案3】:

      你可以使用 "UTF8::str_transliterate" -> 你可以通过 composer 安装它 -> https://packagist.org/packages/voku/portable-utf8

      例如:UTF8::str_transliterate('déjà σσς iıii') // deja sss iiii

      ...或者您可以使用 -> https://packagist.org/packages/voku/urlify 也可以通过 composer 获得,在这里您可以选择一种语言。

      例如: URLify::filter('Cağaloğlu, çalıştığı, müjde, lazım, mahkûm', 60, 'tr'); // "Cagaloglu-calistigi-mujde-lazim-mahkum"

      制造拉尔斯 :)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-14
        • 2012-12-07
        相关资源
        最近更新 更多