正規表現ベースのソリューションを使用すると、他の方法よりも遅くなり、効率が低下します。
「関数呼び出しが少ない」ことを意味する「より単純」を検討している場合は、preg_split()
またはをお勧めします。ただし、変数をグローバルスコープに追加する必要はなくpreg_match_all()
、説明したいと思います。また、多次元配列を生成し、単に 1 次元の配列が必要です。これは のもう 1 つの利点です。preg_match_all()
preg_split()
preg_match_all()
preg_split()
ここにオプションのバッテリーがあります。一部は私のもので、一部は他の人が投稿したものです。うまくいくものもあれば、うまくいくものもあれば、うまくいかないものもあります。教育の時間だ…
$stuff = "[1379082600-1379082720],[1379082480-1379082480],[1379514420-1379515800],";
// NOTICE THE TRAILING COMMA ON THE STRING!
// my preg_split() pattern #1 (72 steps):
var_export(preg_split('/[\],[]+/', $stuff, 0, PREG_SPLIT_NO_EMPTY));
// my preg_split() pattern #2 (72 steps):
var_export(preg_split('/[^\d-]+/', $stuff, 0, PREG_SPLIT_NO_EMPTY));
// my preg_match_all pattern #1 (16 steps):
var_export(preg_match_all('/[\d-]+/', $stuff, $matches) ? $matches[0] : 'failed');
// my preg_match_all pattern #2 (16 steps):
var_export(preg_match_all('/[^\],[]+/', $stuff, $matches) ? $matches[0] : 'failed');
// Bora's preg_match_all pattern (144 steps):
var_export(preg_match_all('/\[(.*?)\]/', $stuff, $matches) ? $matches[0] : 'failed');
// Alex Howansky's is the cleanest, efficient / correct method
var_export(explode('],[', trim($stuff, '[],')));
// Andy Gee's method (flawed / incorrect -- 4 elements in output)
var_export(explode(",", str_replace(["[","]"], "", $stuff)));
// OP's method (flawed / incorrect -- 4 elements in output)
$stuff = str_replace(["[", "]"], ["", ""], $stuff);
$stuff = explode(",", $stuff);
var_export($stuff);
メソッドのデモンストレーションをご覧になりたい場合は、ここをクリックしてください。
歩数を確認したい場合は、このパターンのデモをクリックして、私が提供したパターンを交換してください。