草庐IT

utf8mb_unicode_ci

全部标签

php - PHP函数iconv_strlen、mb_strlen和strlen有什么区别?

iconv_strlen、mb_strlen和strlen函数有什么区别?它们在现实世界中的用途是什么? 最佳答案 strlen()与mb_strlen()的区别在于,后者支持多字节字符。这意味着,这是真实的字符数。第一个假定字符串始终为ascii,这也意味着它始终以字节为单位返回大小(在处理二进制“字符串”时非常有用)。据我所知,iconv_strlen()与mb_strlen()非常相似,但与mb_strlen()相比,它在错误的字符序列上失败,那只是忽略了它们。它使用iconv-library(显然;))。

php - php 可以检测 4 字节编码的 utf8 字符吗?

我在mysql5.1服务器中使用utf8字符集mysql表,它不支持表中的utf8mb4编码。插入4字节编码的utf8字符时,如"?","?","?","?","?","唧","?"。该表将弹出错误或跳过以下文本。如何以编程方式在PHP中检测4字节编码的utf8字符并替换它们? 最佳答案 以下正则表达式将替换4字节UTF-8字符:functionreplace4byte($string,$replacement=''){returnpreg_replace('%(?:\xF0[\x90-\xBF][\x80-\xBF]{2}#pla

php - php 可以检测 4 字节编码的 utf8 字符吗?

我在mysql5.1服务器中使用utf8字符集mysql表,它不支持表中的utf8mb4编码。插入4字节编码的utf8字符时,如"?","?","?","?","?","唧","?"。该表将弹出错误或跳过以下文本。如何以编程方式在PHP中检测4字节编码的utf8字符并替换它们? 最佳答案 以下正则表达式将替换4字节UTF-8字符:functionreplace4byte($string,$replacement=''){returnpreg_replace('%(?:\xF0[\x90-\xBF][\x80-\xBF]{2}#pla

php - 为什么 mb_strpos() 比 strpos() 慢得多?

我批评过ananswer在查找子字符串偏移量时建议使用preg_match而不是===以避免类型不匹配。然而,后来答案的作者发现preg_match实际上比多字节操作mb_strpos显着快。普通strpos比这两个函数都快,但当然不能处理多字节字符串。我知道mb_strpos需要比strpos做更多。但是,如果正则表达式可以几乎和strpos一样快,那么mb_strpos到底是为了什么而花费这么多时间呢?我强烈怀疑这是一个优化错误。例如,PHP扩展是否会比其native函数慢?mb_strpos($str,"颜色",0,"GBK"):15.988190889(89%)preg_mat

php - 为什么 mb_strpos() 比 strpos() 慢得多?

我批评过ananswer在查找子字符串偏移量时建议使用preg_match而不是===以避免类型不匹配。然而,后来答案的作者发现preg_match实际上比多字节操作mb_strpos显着快。普通strpos比这两个函数都快,但当然不能处理多字节字符串。我知道mb_strpos需要比strpos做更多。但是,如果正则表达式可以几乎和strpos一样快,那么mb_strpos到底是为了什么而花费这么多时间呢?我强烈怀疑这是一个优化错误。例如,PHP扩展是否会比其native函数慢?mb_strpos($str,"颜色",0,"GBK"):15.988190889(89%)preg_mat

php - 什么是 "ANSI as UTF-8"以及如何使 fputcsv() 生成带 BOM 的 UTF-8?

我制作了一个PHP脚本,用于生成之前由另一个进程生成的CSV文件。然后,必须通过另一个过程导入CSV文件。旧CSV文件的导入工作正常,但在导入新CSV文件时出现特殊字符问题。当我用Notepad++打开旧的CSV时,它说编码是UTF-8,而当我用它打开新的CSV时,它说它们的编码是“ANSIasUTF-8”。两者有什么区别?我怎样才能使fopen和fputcsv使用“纯”?UTF-8编码?谢谢! 最佳答案 文件没有问题。“ANSIasUTF-8”表示没有BOM,但Notepad++通过分析字节模式明确地将编码识别为UTF-8。我通过

php - 什么是 "ANSI as UTF-8"以及如何使 fputcsv() 生成带 BOM 的 UTF-8?

我制作了一个PHP脚本,用于生成之前由另一个进程生成的CSV文件。然后,必须通过另一个过程导入CSV文件。旧CSV文件的导入工作正常,但在导入新CSV文件时出现特殊字符问题。当我用Notepad++打开旧的CSV时,它说编码是UTF-8,而当我用它打开新的CSV时,它说它们的编码是“ANSIasUTF-8”。两者有什么区别?我怎样才能使fopen和fputcsv使用“纯”?UTF-8编码?谢谢! 最佳答案 文件没有问题。“ANSIasUTF-8”表示没有BOM,但Notepad++通过分析字节模式明确地将编码识别为UTF-8。我通过

php - 支持 Unicode 的 PHP 中的自然排序算法?

是否可以使用自然顺序算法在PHP中对包含Unicode/UTF-8字符的数组进行排序?例如(这个数组中的顺序是正确排序的):$array=array(0=>'Agile',1=>'Ágile',2=>'Àgile',3=>'Âgile',4=>'Ägile',5=>'Ãgile',6=>'Test',);如果我尝试使用asort($array)我会得到以下结果:Array([0]=>Agile[6]=>Test[2]=>Àgile[1]=>Ágile[3]=>Âgile[5]=>Ãgile[4]=>Ägile)并使用natsort($array):Array([2]=>Àgile[1]

php - 支持 Unicode 的 PHP 中的自然排序算法?

是否可以使用自然顺序算法在PHP中对包含Unicode/UTF-8字符的数组进行排序?例如(这个数组中的顺序是正确排序的):$array=array(0=>'Agile',1=>'Ágile',2=>'Àgile',3=>'Âgile',4=>'Ägile',5=>'Ãgile',6=>'Test',);如果我尝试使用asort($array)我会得到以下结果:Array([0]=>Agile[6]=>Test[2]=>Àgile[1]=>Ágile[3]=>Âgile[5]=>Ãgile[4]=>Ägile)并使用natsort($array):Array([2]=>Àgile[1]

php - 如何在 PHP 中从 Unicode 转换表情符号?

我用这个tableofEmoji并尝试以下代码:如果我尝试转换\u1F600(笑脸)通过json_decode,我看到了这个符号——ὠ0。怎么了?如何获得正确的表情符号? 最佳答案 PHP5JSON的\u一次只能处理一个UTF-16代码单元,因此您需要编写代理对。对于U+1F600这是\uD83D\uDE00,它有效:echojson_decode('"\uD83D\uDE00"');?PHP7您现在不再需要使用json_decode,只需使用\u和unicode文字即可:echo"\u{1F30F}";?