CodeGen_PECL で sary バインディング その3・活用編

続いて今回作成したモジュールが提供する関数の使用例を紹介します。
libsary には他にも色々な API があるのですが、検索に最低限必要な関数だけを実装しました。
全てを網羅できたらいいなーと思いつつ、たぶんやらなさそう...

// SarySearcher オブジェクトを生成
// 失敗したときは WARNING を発し、FALSE を返す
$searcher = sary_searcher_new('hoge.txt');
// 検索
if (sary_searcher_search($searcher, 'hoge')) {
    // 同じ行に2回以上キーワードがヒットする場合もあるので
    // 検索結果を出現位置順にソートする
    sary_searcher_sort_occurrences($searcher);
    // ヒットした行を順番に表示
    while ($line = sary_searcher_get_next_line($searcher)) {
        echo $line;
    }
}
// SarySearcher オブジェクトを破棄
// 特に理由がなければ明示的に呼ばなくても良い
sary_searcher_destroy($searcher);

また、libsary にはない独自の関数を使って全てのヒットした行を配列として取得できます。

$lines = sary_searcher_get_all_lines($searcher);

ここらへんのぬるさが PHP クオリティ。