2016-09-12 1 views
1

PHPで、次の作品:preg_matchの結果を直接変数に代入する方法はありますか?

preg_match("https://stackoverflow.com/a/", "a", $m); 
list($zero) = $m; 

が、以下はエラーを与える:

preg_match("https://stackoverflow.com/a/", "a", list($zero)); 

PHPのドキュメントには、list()は言語構造ですが、私はこれが失敗した理由を具体的に理解したいと思いますと言います。また、結果を変数に直接代入する別の方法(sscanf()など)がありますか?

答えて

1

私が提供できる答えは、私が本当に満足できるものではありません。 list()は、あなたが言語構成を言ったようなもので、2番目の例で使用したように動作しません。これは定義によるものであり、変更することはできません。

Iの変数を取得するextract()の使用しかし、これはPHP「厳格な基準を傷つける、あなたはこのようにそれを使用する場合:

preg_match("https://stackoverflow.com/a/", "a", extract($m, EXTR_PREFIX_ALL, 'preg')); 

Strict Standards: Only variables should be passed by reference 

私はあなたが2つのラインのソリューションを使用する必要があります推測しますpreg_match()の参照渡しで。

0

するpreg_matchで3番目の引数が配列であるためlist()があるので、あなたがlist()それエラーを述べるときは、とにかく、。$mを示すことによって、あなたは単に。試合の返される配列は、変数名が何であるかを言っています言語コンストラクト変数名が必要です。あなたが何を求めているか(変数に直接一致する結果を割り当てる)は既に行われています。 $マッチ(あなたの場合は$m)は変数です。型配列の変数です。 $ m [0]、$ m [1]などを出力するには、$ mをvar_dumpするか、エコーして結果を確認してください。

関連する問題