PHP字符串长度没有strlen()

时间:2010-11-12 05:47:11

标签: php coding-style strlen

只是浏览PHP编码标准的最新版本,有些东西引起了我的注意:

http://svn.php.net/viewvc/php/php-src/trunk/CODING_STANDARDS?revision=296679&view=markup

编码标准#4指出“在编写处理字符串的函数时,请务必记住PHP保存每个字符串的长度属性,并且不应使用strlen()计算...”

我总是使用strlen,也许它已经晚了,但是如何在PHP中访问字符串的内置长度属性?

3 个答案:

答案 0 :(得分:10)

他们在讨论C function,而不是PHP函数。 C函数将在第一个\0之后停止计数,但PHP字符串可以在除结尾之外的其他地方包含\0

答案 1 :(得分:1)

有人明确提到他们谈论的是PHP编码标准,而不是关于C函数或PHP引擎的扩展。

  

========================
PHP编码标准
============ ============
  此文件列出了任何程序员添加或更改的几个标准   PHP中的代码应该遵循。由于这个文件是在很晚才添加的   在PHP v3.0的开发阶段,代码库还没有(还)完全   跟着它,但它正朝着那个方向发展。既然我们现在   在版本4发布之后,许多部分都被重新编码使用   这些规则。

我仍未找到有关字符串长度属性的任何相关信息,但我认为将来如果它与PHP的新版本相关,它们可能会发布信息。

如果有人找到有关此信息的有用信息,请发帖。

答案 2 :(得分:0)

要获取字符串zval的长度(C中的变量),请使用Z_STRLEN(your_zval) 请参阅第398行(PHP 5.4)中的zend_operators.h:

#define Z_STRLEN(zval)          (zval).value.str.len
相关问题