我想在我的自定义PHP项目中使用codeigniter外语字符库如何使用它


I want to use codeigniter foreign character library in my custom PHP project how i can use it?

这是外语字符数组,我可以如何在自己的项目中使用它。

$foreign_characters = array(
'/ä|æ|ǽ/' => 'ae',
'/ö|œ/' => 'oe',
'/ü/' => 'ue',
'/Ä/' => 'Ae',
'/Ü/' => 'Ue',
'/Ö/' => 'Oe',
'/À|Á|Â|Ã|Ä|Å|Ǻ|Ā|Ă|Ą|Ǎ|Α|Ά|Ả|Ạ|Ầ|Ẫ|Ẩ|Ậ|Ằ|Ắ|Ẵ|Ẳ|Ặ|А/' => 'A',
'/à|á|â|ã|å|ǻ|ā|ă|ą|ǎ|ª|α|ά|ả|ạ|ầ|ấ|ẫ|ẩ|ậ|ằ|ắ|ẵ|ẳ|ặ|а/' => 'a',
);

好吧,您的数组已经具有与preg_replace()一起使用的完美格式。

替换可以通过循环数组并为每组字符调用preg_replace()一次来轻松完成,如下所示:

foreach( $foreign_characters as $replace => $with )
{
    $string = preg_replace($replace, $with, $string);
}

这基本上就是您所需要的。


为了使事情更方便和易于使用,请查看此替换类:

class Replacer
{
    /**
     * List of character replacements
     */
    static $foreign_characters = array(
        '/ä|æ|ǽ/' => 'ae',
        '/ö|œ/' => 'oe',
        '/ü/' => 'ue',
        '/Ä/' => 'Ae',
        '/Ü/' => 'Ue',
        '/Ö/' => 'Oe',
        '/À|Á|Â|Ã|Ä|Å|Ǻ|Ā|Ă|Ą|Ǎ|Α|Ά|Ả|Ạ|Ầ|Ẫ|Ẩ|Ậ|Ằ|Ắ|Ẵ|Ẳ|Ặ|А/' => 'A',
        '/à|á|â|ã|å|ǻ|ā|ă|ą|ǎ|ª|α|ά|ả|ạ|ầ|ấ|ẫ|ẩ|ậ|ằ|ắ|ẵ|ẳ|ặ|а/' => 'a',
        );
    /**
     * Replaces all foreign characters listed in 
     * self::$foreign_characters with their given counterparts
     * @param $string string to replace characters in
     */
    public static function replace_chars_in($string)
    {
        foreach( self::$foreign_characters as $replace => $with )
        {
            $string = preg_replace($replace, $with, $string);
        }
        return $string;
    }
}

我决定创建一个类,因为它提供了一种处理替换的简单方法,并且您可以毫不费力地改进功能。我使用了一个静态函数,所以你不需要实例化它,替换只需通过调用Replacer::replace_chars_in();来完成。试试这个:

echo Replacer::replace_chars_in("äÄfäüädasÖäǽasd");

它将输出:aeAefaeueaedasOeaeaeasd


如果您不熟悉正则表达式,请阅读 PHP 参考。在那里,您可以找到有关它们如何工作的详细说明。

这篇关于字符替换和 strtr 函数的文章也可能让您感兴趣。

在文本帮助程序中使用 convert_accented_characters() 函数。https://codeigniter.com/userguide3/helpers/text_helper.html

function convert_accented_characters($str)
{
    static $array_from, $array_to;
    if ( ! is_array($array_from))
    {
        if (file_exists(APPPATH.'config/foreign_chars.php'))
        {
            include(APPPATH.'config/foreign_chars.php');
        }
        if (file_exists(APPPATH.'config/'.ENVIRONMENT.'/foreign_chars.php'))
        {
            include(APPPATH.'config/'.ENVIRONMENT.'/foreign_chars.php');
        }
        if (empty($foreign_characters) OR ! is_array($foreign_characters))
        {
            $array_from = array();
            $array_to = array();
            return $str;
        }
        $array_from = array_keys($foreign_characters);
        $array_to = array_values($foreign_characters);
    }
    return preg_replace($array_from, $array_to, $str);
}