3

PHPコーディング標準の最新リリースをブラウズしているだけで、何かが私の目を引きました:

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

コーディング標準 #4 では、「文字列を処理する関数を作成するときは、PHP が各文字列の長さプロパティを保持していること、および strlen() で計算されるべきではないことを覚えておいてください...」と述べています。

私は常に strlen を使用してきましたが、単に遅いだけかもしれませんが、PHP で組み込みの文字列の長さプロパティにアクセスするにはどうすればよいでしょうか?

4

3 に答える 3

10

彼らは、PHP 関数ではなく、C 関数について話しているのです。C 関数は最初の の後にカウントを停止します\0が、PHP 文字列\0には最後以外の場所に含めることができます。

于 2010-11-12T05:48:54.460 に答える
1

彼らは、C関数やPHPエンジンの拡張についてではなく、PHPコーディング標準について話していることが明確に述べられています。

========================
PHPコーディング標準
======================= =
このファイルには、PHPでコードを追加または変更するプログラマーが従う必要のあるいくつかの標準がリストされています。このファイルはPHPv3.0の開発の非常に遅い段階で追加されたため、コードベースは(まだ)完全には準拠していませんが、その一般的な方向に進んでいます。バージョン4のリリースに慣れてきたため、これらのルールを使用するように多くのセクションが再コーディングされました。

それでも、文字列の長さのプロパティに関連する情報は見つかりませんでしたが、新しいバージョンのPHPに関連している場合は、将来的に情報が公開される可能性があると思います。

誰かがこれについて有用な情報を見つけたら投稿してください。

于 2010-11-12T06:22:50.953 に答える
0

文字列 zval (C の変数) の長さを取得するには、 Z_STRLEN(your_zval) を使用します zend_operators.h の 398 行目 (PHP 5.4) を参照してください。

#define Z_STRLEN(zval)          (zval).value.str.len
于 2012-04-02T17:58:51.510 に答える