0

タブまたはカンマ区切りが見つかるまで、配列の最初の N 文字を探す正規表現が必要です。

配列は次のようになります。

array (
  0 => '001,Foo,Bar',
  1 => '0003,Foo,Bar',
  2 => '3000,Foo,Bar',
  3 => '3333433,Foo,Bar',
)

最初の N 文字を探しているので、たとえば、検索するパターンは0003で、配列インデックス 1 を取得します...

これを行う良い方法は何ですか?

4

6 に答える 6

2
/^(.*?)[,\t]/

?

于 2009-12-16T19:30:14.947 に答える
1

/^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);
于 2009-12-16T19:33:57.260 に答える
0
$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'
于 2009-12-16T20:02:55.350 に答える
0

この 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'));
于 2009-12-16T19:30:44.957 に答える