Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何处理PHP中的Unicode无意识<;6._Php_Unicode_Function - Fatal编程技术网

如何处理PHP中的Unicode无意识<;6.

如何处理PHP中的Unicode无意识<;6.,php,unicode,function,Php,Unicode,Function,我正在做一个需要了解Unicode的项目。PHP提供了一系列有用的函数,如str_count_words(),用于计算某些输入中的字数,但它们无法处理PHP

我正在做一个需要了解Unicode的项目。PHP提供了一系列有用的函数,如str_count_words(),用于计算某些输入中的字数,但它们无法处理PHP<6中的UTF-8数据,这是一个遗憾。这同样适用于strlen()、strrev()等

我该怎么办?PHP6还没有发布,所以我不能要求人们使用我的软件


我是否应该为字符串函数编写一个包装器库,如果版本低于6,它将使用PHP6的函数或我自己的函数?

正如您所建议的,您可以创建一个包装器库,直到PHP6成为标准安装。(考虑到PHP 5的ISP接入速度,这是几年之后的事了


同时,这种方法也被证明是足够的。

正如您所建议的,您可以创建一个包装器库,直到PHP6成为标准安装。(考虑到PHP5的ISP使用速度,这是几年之后的事了。)


同时,这种方法也被证明是足够的。

对于多字节字符串函数,您应该检查

例如,有一个函数——相当于strlen,但可以与UTF-8一起使用


不幸的是,这些函数只有少数几个,而且所有的
str*
都不一定有一个
mb_str*
等价物……但是,对于多字节字符串函数,在PHP5.x中创建一个100%UTF-8的WebList是完全可能的,您应该检查一下

例如,有一个函数——相当于strlen,但可以与UTF-8一起使用

不幸的是,这些函数只有少数几个,而且所有的
str*
都不一定有一个
mb_str*
等价物……但是,在PHP5.x中创建一个100%UTF-8的WebListe是完全可能的,您可以使用这些函数

另一个好主意可能是看看其他人是如何做到这一点的,特别是像Wordpress和Drupal这样的成熟系统。据我所知,它们都有自己的多字节函数包装器

其他可能感兴趣的资源:

您可以使用这些功能

另一个好主意可能是看看其他人是如何做到这一点的,特别是像Wordpress和Drupal这样的成熟系统。据我所知,它们都有自己的多字节函数包装器

其他可能感兴趣的资源:


我已经在PHP5中为此创建了一个包装类(我认为这是唯一可靠的方法),下面是我对您提到的函数的一些实现:

function iki_String_str_word_count($string, $format = 0, $search = null)
{
    $result = iki()->Regex->Match_All($string, '[\p{L}\p{Mn}\p{Pd}\'\x{2019}' . iki()->Regex->Quote($search) . ']+', 0, 'u');

    if ($format == 0)
    {
        return count($result);
    }

    return $result;
}

function iki_String_strlen($string)
{
    return strlen(utf8_decode($string));
}

还有一个实现了很多函数族的包装类。它还声称是100%UTF-8兼容的。

我已经在PHP5中为此创建了一个包装类(我认为这是唯一可靠的方法),下面是我对您提到的函数的一些实现:

function iki_String_str_word_count($string, $format = 0, $search = null)
{
    $result = iki()->Regex->Match_All($string, '[\p{L}\p{Mn}\p{Pd}\'\x{2019}' . iki()->Regex->Quote($search) . ']+', 0, 'u');

    if ($format == 0)
    {
        return count($result);
    }

    return $result;
}

function iki_String_strlen($string)
{
    return strlen(utf8_decode($string));
}

还有一个实现了许多函数系列的应用程序。它还声称是100%UTF-8兼容的。

它必须是PHP吗?如果Unicode支持是一个核心问题,PHP5可能不是平台的最佳选择。它是一个web应用程序,必须在尽可能多的平台和服务器上工作。它必须支持rt Postgres、MySQL、SQL Server和Oracle RDBMS。它必须有XML解析支持,而且还有大量其他要求,坦率地说,PHP似乎最有意义。其他现代脚本语言当然可以很好地处理XML和数据库,同时本机也支持Unicode字符串。例如Python、ASP.NET、各种可能的Java。虽然PHP支持在cheapo共享主机上最为广泛,但PHP5在相当长的一段时间内仍将是PHP5,PHP5中的Unicode支持是非常不达标的。它必须是PHP吗?如果Unicode支持是一个核心问题,PHP5可能不是平台的最佳选择。它是一个web应用程序,必须在尽可能多的平台上工作尽可能多的服务器。它必须支持Postgres、MySQL、SQL Server和Oracle RDBMS。它必须支持XML解析,还有大量其他要求,坦率地说,PHP似乎是最有意义的。其他现代脚本语言当然可以很好地处理XML和数据库,同时本机也支持Unicode字符串。例如Python、ASP.NET和Java脚本编写的各种可能性。虽然PHP支持在cheapo共享主机上最为广泛,但PHP5在相当长一段时间内仍将是PHP5,PHP5中的Unicode支持非常不达标。PS:请原谅我的具体方法,但我现在很忙,无法翻译代码。希望它刚好能够通过m请原谅我的具体方法,但我现在很忙,无法翻译代码。希望它能传递消息。