草庐IT

mb_strlen

全部标签

php - PHP 的 mb_internal_encoding 究竟做了什么?

AccordingtothePHPwebsite它这样做:encodingisthecharacterencodingnameusedfortheHTTPinputcharacterencodingconversion,HTTPoutputcharacterencodingconversion,andthedefaultcharacterencodingforstringfunctionsdefinedbythembstringmodule.Youshouldnoticethattheinternalencodingistotallydifferentfromtheoneformult

PHP iconv_strlen() 含义问题

我想知道下面这句话对我们这些傻瓜来说是什么意思?什么是字节序列?一个字节有多少个字符?iconv_strlen()根据指定字符集统计给定字节序列str中字符出现的次数,其结果不一定与字符串的字节长度相同。 最佳答案 让我们以日语字符“こ”为例。假设采用UTF-8编码,这是一个3字节字符(0xE30x810x93)。让我们看看当我们使用strlen时会发生什么:$php-r'echostrlen("こ")."\n";'3结果是3,因为strlen正在计算字节数。但是,根据UTF-8编码,这只是单个字符。这就是iconv_strlen的

php - strlen()==0 和 empty() 有区别吗?

我正在查看其他人编写的一些表单验证代码,我看到了这个:strlen()==0在测试表单变量是否为空时,我使用了empty()函数。一种方法比另一种更好吗?它们在功能上是否相同? 最佳答案 在某些情况下,它们会有不同的行为:empty('0');//returnstrue,strlen('0');//returns1.empty(array());//returnstrue,strlen(array());//returnsnullwithaWarninginPHP>=5.3OR5withaNoticeinPHP

php - 我如何在波斯语的 php 中使用 strlen?

我有这个代码:$string='علی';echostrlen($string);因为$string有3个波斯字符,输出必须是3但我得到6。علی有3个字符。为什么我的输出是6?我如何在php中使用strlen()来输出真实的波斯语? 最佳答案 使用mb_strlenReturnsthenumberofcharactersinstringstrhavingcharacterencoding(thesecondparameter)encoding.Amulti-bytecharacteriscountedas1.因为你的3个字符都是多

php - 调用未定义函数 mb_strimwidth

几个月前,我编写了一个简短的代码,它使用mb_strimwidth()将一些文本精确地放入表格单元格中,将点放在截断字符串的末尾。现在,一段时间后,我尝试执行相同的代码,但出现以下错误:Fatalerror:Calltoundefinedfunctionmb_strimwidth()in...我试图找到mbstring.php文件,当我找到mb_strimwidth()函数时,我发现它不再实现了。这怎么可能?但我的主要问题是:如何获得与mb_strimwidth()相同的结果?我想使用循环和mb_strwidth()重写函数,但是mbstring.php文件中的所有函数都是空的。

php - 为什么我应该使用 strtolower() 而不是 mb_strtolower()?

我了解strtolower()和mb_strtolower()函数之间的用法/行为差异。还有它hasbeenasked之前:)但我不明白-strtolower目前的目的是什么?是否因为向后兼容而可用?或者是否有一些用例strtolower更可取?看起来mb_strtolower()更安全,更通用,所以我很想在任何地方使用它...... 最佳答案 不是真正的向后兼容性,而是无需额外加载多字节字符串扩展即可使用代码的能力。所以代码的可移植性问题。strtolower()始终可用。mb_strtolower()只有在加载了额外的mbstr

php - 使用 HTML-ENTITIES 字符集替代 mb_convert_encoding

我有以下代码:mb_convert_encoding($string,'HTML-ENTITIES','utf-8');我需要一个替代代码,它的功能完全相同,但不使用任何mb_*函数(mb扩展名在某些环境中不可用)。我以为utf8_decode(htmlentities($string,ENT_COMPAT,'utf-8'));应该做的完全一样,但不幸的是它没有。 最佳答案 我玩了一下,发现这很有趣。似乎第二部分也运行“htmlspecialchars”。一定是mb_convert_encoding中的一些错误,因为htmlenti

php - strlen() 和 UTF-8 编码

假设UTF-8编码,PHP中的strlen(),这个字符串的长度是否可能为4?我只对strlen()感兴趣,对其他函数不感兴趣这是字符串:$1�2我在自己的电脑上测试过,验证过UTF-8编码,得到的答案是6。我在strlen手册或我读过的有关UTF-8的任何内容中都没有看到任何内容可以解释为什么上面的某些字符计数少于一个。PS:本问答(4)来self在Ebay上购买的ZCE模拟测试。 最佳答案 使用mb_strlen()怎么样?http://lt.php.net/manual/en/function.mb-strlen.php但

mysql - InnoDB 需要一个多小时来导入 600MB 文件,MyISAM 在几分钟内

我目前正在创建一个环境来测试应用程序的性能;我正在使用MySQL和InnoDB进行测试,以找出最适合我们的。在此环境中,我们将自动准备数据库(加载现有转储)并检测我们的测试工具。我正准备使用MySQL和InnoDB测试相同的数据转储,但我已经无法将初始导入速度提高到InnoDB部分的可用速度。最初的转储花费了更长的时间,但这并不让我担心:$foriintestdb_myisamtestdb_innodb;dotimemysqldump--extended-insert$i>$i.sql;donereal0m38.152suser0m8.381ssys0m2.612sreal1m16.6

mysql - InnoDB 需要一个多小时来导入 600MB 文件,MyISAM 在几分钟内

我目前正在创建一个环境来测试应用程序的性能;我正在使用MySQL和InnoDB进行测试,以找出最适合我们的。在此环境中,我们将自动准备数据库(加载现有转储)并检测我们的测试工具。我正准备使用MySQL和InnoDB测试相同的数据转储,但我已经无法将初始导入速度提高到InnoDB部分的可用速度。最初的转储花费了更长的时间,但这并不让我担心:$foriintestdb_myisamtestdb_innodb;dotimemysqldump--extended-insert$i>$i.sql;donereal0m38.152suser0m8.381ssys0m2.612sreal1m16.6