2017-09-15 13 views
0

PHPでワイルドカードを使用してcsvで一致するものを検索する最も速い方法は何でしょうか?PHP/Shell - ワイルドカードでCSVを検索する最速の方法

djfras、Hub3W、%のk6q2、88%HA、zzgsqw2、L632 %%、...

機能/:私はこのように見える単純なテキスト・ファイルを持っている(%はワイルドカードです)例えばのためのマッチを見つける必要があるものは何でも正規表現/ grepを:このよう

diFrasまたはok6q2またはL632s5

には、いくつかのhundert回秒が起こるのだろう - 最も堅牢、時間とCPUの保存方法とどのように実装するには何ですか?

トム

編集ありがとう

事前に

:申し訳ありませんが私は数百行と.jsonファイルの行をループしながら、たまたまあまりにも不正確:)だった - .jsonファイル自体が新鮮ロードされています毎秒

+2

単に '%を置き換える、毎秒ファイルシステムベースのCSVファイルの数百の検索は基本的に正規表現で不可能 –

+1

を使用してデータベースを検索し、その後、適切なインデックスを追加、最初のデータベースにcsvファイルをロードします'適切な正規表現ワイルドカードを持つワイルドカード - ドット' .' –

+0

あるSQL – Asunez

答えて

0

これは私が変えたものです - うまくいくようですが、私の目には恐ろしい馬鹿に見えますか?

私はこの正規表現事に非常に新しいんだと - 任意のアイデア/応答/修正/改善非常に

:)を歓迎し、組み込みの単純なPHPよりも約10〜20倍遅くなるように思われますワイルドカードを使用しないin_array検索。今私はこれを測定しました - 30~50倍遅く! puuuh

私のルーキーコーディングよりも優れた/クリーナー/高速な方法はありませんか?

$haystack = explode(',', str_replace('%', '.', strtoupper('DEISD, B%W951%, CCA828'))); 

$needle = strtoupper('BAW951L'); 

foreach ($haystack as $pattern) { 
    preg_match('/^' . trim($pattern) . '$/', $needle) ? $match = 'true' : $match = 'false'; 
    // just for debug print what it does 
    print(preg_match('/' . trim($pattern) . '/', $needle) . PHP_EOL); 
    print($match . PHP_EOL); 
} 
関連する問題