doumaikuang4202 2012-11-01 15:06
浏览 22
已采纳

用拉丁语对应替换外来字符,用连字符替换空格(PHP)

I have this code:

$header = 'weird character->>>ÅÅÖÄ';
$header = strtolower(str_replace(array('  ', ' '), '-', preg_replace('/[^a-zA-Z0-9 s]/', '', trim($header))));

It should output weird-characteraaoa, but it doesn't. It just removes the ÅÅÖÄ-letters. Any idea why this isn't working? I'm using UTF-8 if that has something to do with it

  • 写回答

2条回答 默认 最新

  • doulai8128 2012-11-01 15:08
    关注

    This is a hard problem since not all languages can match-up well with ASCII characters.

    However, @AlixAxel has the current best implementation I've ever seen in his phunction framework.

        public static function Slug($string, $slug = '-', $extra = null)
        {
            return strtolower(trim(preg_replace('~[^0-9a-z' . preg_quote($extra, '~') . ']+~i', $slug, self::Unaccent($string)), $slug));
        }
    
        public static function Unaccent($string)
        {
            if (extension_loaded('intl') === true)
            {
                $string = Normalizer::normalize($string, Normalizer::FORM_KD);
            }
    
            if (strpos($string = htmlentities($string, ENT_QUOTES, 'UTF-8'), '&') !== false)
            {
                $string = html_entity_decode(preg_replace('~&([a-z]{1,2})(?:acute|caron|cedil|circ|grave|lig|orn|ring|slash|tilde|uml);~i', '$1', $string), ENT_QUOTES, 'UTF-8');
            }
    
            return $string;
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 使用ESP8266连接阿里云出现问题
  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角