タブまたはカンマ区切りが見つかるまで、配列の最初の N 文字を探す正規表現が必要です。
配列は次のようになります。
array (
0 => '001,Foo,Bar',
1 => '0003,Foo,Bar',
2 => '3000,Foo,Bar',
3 => '3333433,Foo,Bar',
)
最初の N 文字を探しているので、たとえば、検索するパターンは0003で、配列インデックス 1 を取得します...
これを行う良い方法は何ですか?
タブまたはカンマ区切りが見つかるまで、配列の最初の N 文字を探す正規表現が必要です。
配列は次のようになります。
array (
0 => '001,Foo,Bar',
1 => '0003,Foo,Bar',
2 => '3000,Foo,Bar',
3 => '3333433,Foo,Bar',
)
最初の N 文字を探しているので、たとえば、検索するパターンは0003で、配列インデックス 1 を取得します...
これを行う良い方法は何ですか?
/^(.*?)[,\t]/
?
/^0003,/
と一緒に正規表現を試してくださいpreg_grep
:
$array = array('001,Foo,Bar', '0003,Foo,Bar', '3000,Foo,Bar', '3333433,Foo,Bar');
$matches = preg_grep('/^0003,/', $array);
var_dump($matches);
$pattern = '/^[0-9]/siU';
for($i=0;$i<count($yourarray);$i++)
{
$ids = $yourarray[$i];
if(preg_match($pattern,$ids))
{
$results[$i] = $yourarray[$i];
}
}
print_r($results);
これは印刷されます
0 => '001',
1 => '0003',
2 => '3000',
3 => '3333433'
この PHP5 コードは、末尾のコンマを想定して、最初の要素でプレフィックス検索を実行します。O(n)、線形、非効率、遅いなどです。検索速度を向上させたい場合は、より優れたデータ構造が必要になります。
<?php
function searchPrefix(array $a, $needle) {
$expression = '/^' . quotemeta($needle) . ',/';
$results = array();
foreach ($a as $k => $v)
if (preg_match($expression, $v)) $results[] = $k;
return $results;
}
print_r(searchPrefix($a, '0003'));