只是浏览了最新版本的 PHP 编码标准,有一些东西引起了我的注意:
http://svn.php.net/viewvc/php/php-src/trunk/CODING_STANDARDS?revision=296679&view=markup
编码标准 #4 规定“在编写处理字符串的函数时,请务必记住 PHP 拥有每个字符串的长度属性,并且不应使用 strlen() 来计算...”
我一直使用 strlen,也许现在已经晚了,但是如何访问 PHP 中字符串的内置长度属性?
只是浏览了最新版本的 PHP 编码标准,有一些东西引起了我的注意:
http://svn.php.net/viewvc/php/php-src/trunk/CODING_STANDARDS?revision=296679&view=markup
编码标准 #4 规定“在编写处理字符串的函数时,请务必记住 PHP 拥有每个字符串的长度属性,并且不应使用 strlen() 来计算...”
我一直使用 strlen,也许现在已经晚了,但是如何访问 PHP 中字符串的内置长度属性?
他们在谈论C 函数,而不是 PHP 函数。C 函数将在第一个 之后停止计数\0
,但 PHP 字符串可以包含\0
结尾以外的其他位置。
很明显,他们谈论的是 PHP 编码标准,而不是 C 函数或 PHP 引擎的扩展。
=========================
PHP 编码标准
======================= =
该文件列出了任何程序员在 PHP 中添加或更改代码时应遵循的几个标准。由于此文件是在 PHP v3.0 开发的后期添加的,因此代码库(尚未)完全遵循它,但它正朝着那个大方向前进。由于我们现在已经进入第 4 版,因此许多部分已重新编码以使用这些规则。
我仍然没有找到关于字符串长度属性的任何相关信息,但我认为如果它与新版本的 PHP 相关,他们将来可能会发布这些信息。
如果有人发现有关此的有用信息,请发布。
要获取字符串 zval(C 中的变量)的长度,请使用 Z_STRLEN(your_zval),请参见第 398 行的 zend_operators.h (PHP 5.4):
#define Z_STRLEN(zval) (zval).value.str.len