如何用PHP中的特殊字符替换特殊字符?

Car*_*los 16 php string replace character-encoding special-characters

我该如何更换:

  • "ã"与"a"
  • "é"与"e"

用PHP?这可能吗?我已经读过某个地方,我可以用基本字符的ascii值和重音的ascii值做一些数学,但我现在找不到任何引用.

Ali*_*xel 24

如果您无法访问Normalizer类或只是不想使用它,您可以使用以下函数来替换大多数(所有?)常见的重音.

function Unaccent($string)
{
    return preg_replace('~&([a-z]{1,2})(acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', '$1', htmlentities($string, ENT_QUOTES, 'UTF-8'));
}
Run Code Online (Sandbox Code Playgroud)


McP*_*inM 13

这个答案是不正确的.我编写它时,我不理解Unicode规范化.看看francadaval的评论和链接

查看Normalizer类来执行此操作.文档很好,所以我只是链接它而不是重复这里:

http://www.php.net/manual/en/class.normalizer.php

具体来说,该类的normalize成员:

http://www.php.net/manual/en/normalizer.normalize.php

请注意,Unicode规范化有几种形式,您似乎需要规范化表单KD(NFKD)兼容性分解,但您应该阅读文档以确保.

你不应该试图为此推出自己的功能:有太多可能出错的东西,使用提供的功能是一个更好的主意.

  • 你确定这个有效吗?`normalizer_normalize('olá',Normalizer :: FORM_KD); //olaÌ`我也尝试了所有其他可用的表单,似乎没有一个只返回`ola`. (6认同)

小智 12

对于那些没有php 5.3的人,我找到了另一个效果很好并且看起来非常全面的解决方案.以下是作者网站http://www.evaisse.net/2008/php-translit-remove-accent-unaccent-21001的链接.这是功能.

/**
 * Unaccent the input string string. An example string like `ÀØ?ÿ??????`
 * will be translated to `AOeyIOzoBY`. More complete than :
 *   strtr( (string)$str,
 *          "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ",
 *          "aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn" );
 *
 * @param $str input string
 * @param $utf8 if null, function will detect input string encoding
 * @author http://www.evaisse.net/2008/php-translit-remove-accent-unaccent-21001
 * @return string input string without accent
 */
function remove_accents( $str, $utf8=true )
{
    $str = (string)$str;
    if( is_null($utf8) ) {
        if( !function_exists('mb_detect_encoding') ) {
            $utf8 = (strtolower( mb_detect_encoding($str) )=='utf-8');
        } else {
            $length = strlen($str);
            $utf8 = true;
            for ($i=0; $i < $length; $i++) {
                $c = ord($str[$i]);
                if ($c < 0x80) $n = 0; # 0bbbbbbb
                elseif (($c & 0xE0) == 0xC0) $n=1; # 110bbbbb
                elseif (($c & 0xF0) == 0xE0) $n=2; # 1110bbbb
                elseif (($c & 0xF8) == 0xF0) $n=3; # 11110bbb
                elseif (($c & 0xFC) == 0xF8) $n=4; # 111110bb
                elseif (($c & 0xFE) == 0xFC) $n=5; # 1111110b
                else return false; # Does not match any model
                for ($j=0; $j<$n; $j++) { # n bytes matching 10bbbbbb follow ?
                    if ((++$i == $length)
                        || ((ord($str[$i]) & 0xC0) != 0x80)) {
                        $utf8 = false;
                        break;
                    }

                }
            }
        }

    }

    if(!$utf8)
        $str = utf8_encode($str);

    $transliteration = array(
    '?' => 'I', 'Ö' => 'O','Œ' => 'O','Ü' => 'U','ä' => 'a','æ' => 'a',
    '?' => 'i','ö' => 'o','œ' => 'o','ü' => 'u','ß' => 's','?' => 's',
    'À' => 'A','Á' => 'A','Â' => 'A','Ã' => 'A','Ä' => 'A','Å' => 'A',
    'Æ' => 'A','?' => 'A','?' => 'A','?' => 'A','Ç' => 'C','?' => 'C',
    '?' => 'C','?' => 'C','?' => 'C','?' => 'D','?' => 'D','È' => 'E',
    'É' => 'E','Ê' => 'E','Ë' => 'E','?' => 'E','?' => 'E','?' => 'E',
    '?' => 'E','?' => 'E','?' => 'G','?' => 'G','?' => 'G','?' => 'G',
    '?' => 'H','?' => 'H','Ì' => 'I','Í' => 'I','Î' => 'I','Ï' => 'I',
    '?' => 'I','?' => 'I','?' => 'I','?' => 'I','?' => 'I','?' => 'J',
    '?' => 'K','?' => 'K','?' => 'K','?' => 'K','?' => 'K','?' => 'L',
    'Ñ' => 'N','?' => 'N','?' => 'N','?' => 'N','?' => 'N','Ò' => 'O',
    'Ó' => 'O','Ô' => 'O','Õ' => 'O','Ø' => 'O','?' => 'O','?' => 'O',
    '?' => 'O','?' => 'R','?' => 'R','?' => 'R','?' => 'S','?' => 'S',
    '?' => 'S','?' => 'S','Š' => 'S','?' => 'T','?' => 'T','?' => 'T',
    '?' => 'T','Ù' => 'U','Ú' => 'U','Û' => 'U','?' => 'U','?' => 'U',
    '?' => 'U','?' => 'U','?' => 'U','?' => 'U','?' => 'W','?' => 'Y',
    'Ÿ' => 'Y','Ý' => 'Y','?' => 'Z','?' => 'Z','Ž' => 'Z','à' => 'a',
    'á' => 'a','â' => 'a','ã' => 'a','?' => 'a','?' => 'a','?' => 'a',
    'å' => 'a','ç' => 'c','?' => 'c','?' => 'c','?' => 'c','?' => 'c',
    '?' => 'd','?' => 'd','è' => 'e','é' => 'e','ê' => 'e','ë' => 'e',
    '?' => 'e','?' => 'e','?' => 'e','?' => 'e','?' => 'e','ƒ' => 'f',
    '?' => 'g','?' => 'g','?' => 'g','?' => 'g','?' => 'h','?' => 'h',
    'ì' => 'i','í' => 'i','î' => 'i','ï' => 'i','?' => 'i','?' => 'i',
    '?' => 'i','?' => 'i','?' => 'i','?' => 'j','?' => 'k','?' => 'k',
    '?' => 'l','?' => 'l','?' => 'l','?' => 'l','?' => 'l','ñ' => 'n',
    '?' => 'n','?' => 'n','?' => 'n','?' => 'n','?' => 'n','ò' => 'o',
    'ó' => 'o','ô' => 'o','õ' => 'o','ø' => 'o','?' => 'o','?' => 'o',
    '?' => 'o','?' => 'r','?' => 'r','?' => 'r','?' => 's','š' => 's',
    '?' => 't','ù' => 'u','ú' => 'u','û' => 'u','?' => 'u','?' => 'u',
    '?' => 'u','?' => 'u','?' => 'u','?' => 'u','?' => 'w','ÿ' => 'y',
    'ý' => 'y','?' => 'y','?' => 'z','?' => 'z','ž' => 'z','?' => 'A',
    '?' => 'A','?' => 'A','?' => 'A','?' => 'A','?' => 'A','?' => 'A',
    '?' => 'A','?' => 'A','?' => 'A','?' => 'A','?' => 'A','?' => 'A',
    '?' => 'A','?' => 'A','?' => 'A','?' => 'A','?' => 'A','?' => 'A',
    '?' => 'A','?' => 'A','?' => 'A','?' => 'B','?' => 'G','?' => 'D',
    '?' => 'E','?' => 'E','?' => 'E','?' => 'E','?' => 'E','?' => 'E',
    '?' => 'E','?' => 'E','?' => 'E','?' => 'Z','?' => 'I','?' => 'I',
    '?' => 'I','?' => 'I','?' => 'I','?' => 'I','?' => 'I','?' => 'I',
    '?' => 'I','?' => 'I','?' => 'I','?' => 'I','?' => 'I','?' => 'I',
    '?' => 'I','?' => 'I','?' => 'I','?' => 'I','?' => 'I','?' => 'I',
    '?' => 'T','?' => 'I','?' => 'I','?' => 'I','?' => 'I','?' => 'I',
    '?' => 'I','?' => 'I','?' => 'I','?' => 'I','?' => 'I','?' => 'I',
    '?' => 'I','?' => 'I','?' => 'I','?' => 'K','?' => 'L','?' => 'M',
    '?' => 'N','?' => 'K','?' => 'O','?' => 'O','?' => 'O','?' => 'O',
    '?' => 'O','?' => 'O','?' => 'O','?' => 'O','?' => 'O','?' => 'P',
    '?' => 'R','?' => 'R','?' => 'S','?' => 'T','?' => 'Y','?' => 'Y',
    '?' => 'Y','?' => 'Y','?' => 'Y','?' => 'Y','?' => 'Y','?' => 'Y',
    '?' => 'Y','?' => 'Y','?' => 'F','?' => 'X','?' => 'P','?' => 'O',
    '?' => 'O','?' => 'O','?' => 'O','?' => 'O','?' => 'O','?' => 'O',
    '?' => 'O','?' => 'O','?' => 'O','?' => 'O','?' => 'O','?' => 'O',
    '?' => 'O','?' => 'O','?' => 'O','?' => 'O','?' => 'O','?' => 'O',
    '?' => 'O','?' => 'a','?' => 'a','?' => 'a','?' => 'a','?' => 'a',
    '?' => 'a','?' => 'a','?' => 'a','?' => 'a','?' => 'a','?' => 'a',
    '?' => 'a','?' => 'a','?' => 'a','?' => 'a','?' => 'a','?' => 'a',
    '?' => 'a','?' => 'a','?' => 'a','?' => 'a','?' => 'a','?' => 'a',
    '?' => 'a','?' => 'a','?' => 'a','?' => 'b','?' => 'g','?' => 'd',
    '?' => 'e','?' => 'e','?' => 'e','?' => 'e','?' => 'e','?' => 'e',
    '?' => 'e','?' => 'e','?' => 'e','?' => 'z','?' => 'i','?' => 'i',
    '?' => 'i','?' => 'i','?' => 'i','?' => 'i','?' => 'i','?' => 'i',
    '?' => 'i','?' => 'i','?' => 'i','?' => 'i','?' => 'i','?' => 'i',
    '?' => 'i','?' => 'i','?' => 'i','?' => 'i','?' => 'i','?' => 'i',
    '?' => 'i','?' => 'i','?' => 'i','?' => 'i','?' => 't','?' => 'i',
    '?' => 'i','?' => 'i','?' => 'i','?' => 'i','?' => 'i','?' => 'i',
    '?' => 'i','?' => 'i','?' => 'i','?' => 'i','?' => 'i','?' => 'i',
    '?' => 'i','?' => 'i','?' => 'i','?' => 'i','?' => 'i','?' => 'k',
    '?' => 'l','?' => 'm','?' => 'n','?' => 'k','?' => 'o','?' => 'o',
    '?' => 'o','?' => 'o','?' => 'o','?' => 'o','?' => 'o','?' => 'o',
    '?' => 'o','?' => 'p','?' => 'r','?' => 'r','?' => 'r','?' => 's',
    '?' => 's','?' => 't','?' => 'y','?' => 'y','?' => 'y','?' => 'y',
    '?' => 'y','?' => 'y','?' => 'y','?' => 'y','?' => 'y','?' => 'y',
    '?' => 'y','?' => 'y','?' => 'y','?' => 'y','?' => 'y','?' => 'y',
    '?' => 'y','?' => 'y','?' => 'f','?' => 'x','?' => 'p','?' => 'o',
    '?' => 'o','?' => 'o','?' => 'o','?' => 'o','?' => 'o','?' => 'o',
    '?' => 'o','?' => 'o','?' => 'o','?' => 'o','?' => 'o','?' => 'o',
    '?' => 'o','?' => 'o','?' => 'o','?' => 'o','?' => 'o','?' => 'o',
    '?' => 'o','?' => 'o','?' => 'o','?' => 'o','?' => 'o','?' => 'A',
    '?' => 'B','?' => 'V','?' => 'G','?' => 'D','?' => 'E','?' => 'E',
    '?' => 'Z','?' => 'Z','?' => 'I','?' => 'I','?' => 'K','?' => 'L',
    '?' => 'M','?' => 'N','?' => 'O','?' => 'P','?' => 'R','?' => 'S',
    '?' => 'T','?' => 'U','?' => 'F','?' => 'K','?' => 'T','?' => 'C',
    '?' => 'S','?' => 'S','?' => 'Y','?' => 'E','?' => 'Y','?' => 'Y',
    '?' => 'A','?' => 'B','?' => 'V','?' => 'G','?' => 'D','?' => 'E',
    '?' => 'E','?' => 'Z','?' => 'Z','?' => 'I','?' => 'I','?' => 'K',
    '?' => 'L','?' => 'M','?' => 'N','?' => 'O','?' => 'P','?' => 'R',
    '?' => 'S','?' => 'T','?' => 'U','?' => 'F','?' => 'K','?' => 'T',
    '?' => 'C','?' => 'S','?' => 'S','?' => 'Y','?' => 'E','?' => 'Y',
    '?' => 'Y','ð' => 'd','Ð' => 'D','þ' => 't','Þ' => 'T','?' => 'a',
    '?' => 'b','?' => 'g','?' => 'd','?' => 'e','?' => 'v','?' => 'z',
    '?' => 't','?' => 'i','?' => 'k','?' => 'l','?' => 'm','?' => 'n',
    '?' => 'o','?' => 'p','?' => 'z','?' => 'r','?' => 's','?' => 't',
    '?' => 'u','?' => 'p','?' => 'k','?' => 'g','?' => 'q','?' => 's',
    '?' => 'c','?' => 't','?' => 'd','?' => 't','?' => 'c','?' => 'k',
    '?' => 'j','?' => 'h'
    );
    $str = str_replace( array_keys( $transliteration ),
                        array_values( $transliteration ),
                        $str);
    return $str;
}
//- remove_accents()
Run Code Online (Sandbox Code Playgroud)

  • 这里还有更多要添加的内容:''ʼ'=&gt;“'”,'̧'=&gt;'','ḩ'=&gt;'h','ʼ'=&gt;“'”,'''=&gt; “'”,'''=&gt;“'”,'ừ'=&gt;'u','ế'=&gt;'e','ả'=&gt;'a','ị'=&gt;'i',' ậ'=&gt;'a','ệ'=&gt;'e','ỉ'=&gt;'i','ộ'=&gt;'o','ồ'=&gt;'o','ề'=&gt;' e','ơ'=&gt;'o','ạ'=&gt;'a','ẵ'=&gt;'a','ư'=&gt;'u','ắ'=&gt;'a','ằ '=&gt;'a','ầ'=&gt;'a','ḑ'=&gt;'d','Ḩ'=&gt;'H','Ḑ'=&gt;'D','ḑ'=&gt;'d ','ş'=&gt;'s','ā'=&gt;'a','ţ'=&gt;'t',` (2认同)

qua*_*tme 7

使用自定义字符的短str_replace:

<?php
  $original_string    = "¿Dónde está el niño que vive aquí? En el témpano o en el iglú. ÁFRICA, MÉXICO, ÍNDICE, CANCIÓN y NÚMERO.";

  $some_special_chars = array("á", "é", "í", "ó", "ú", "Á", "É", "Í", "Ó", "Ú", "ñ", "Ñ");
  $replacement_chars  = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U", "n", "N");

  $replaced_string    = str_replace($some_special_chars, $replacement_chars, $original_string);

  echo $replaced_string; // outputs '¿Donde esta el nino que vive aqui? En el tempano o en el iglu. AFRICA, MEXICO, INDICE, CANCION y NUMERO.'
?>
Run Code Online (Sandbox Code Playgroud)