Program Resource

開発者向け各種コード、アルゴリズム、リソース情報ライブラリ もしくはねふぁの覚え書き

Laravel/vueのちょっとした事の覚え書き。Laravel 8.xで作業した際の情報。

controllerでデータを返す際に正規表現でデータをフィルタリングする方法。subjectのfilterにフィルタリングしたい正規表現が入っていて、subjectのidが一致するデータでtagのデータでフィルタリングする例。

if ($subject->filter) {
    try {
        $classdata = class::where('subject_id', $subject->id)->with(['items'=> function ($query) use ($subject) {
            $query->where('tag', 'regexp', $subject->filter);
        }])->orderBy('order')->get();
    } catch (\Exception $e) {
        $classdata = class::where('subject_id', $subject->id)->with('items')->orderBy('order')->get();
    }
} else {

フィルターの正規表現の記述例

単語1を含む					単語1
単語1か単語2を含む			単語1|単語2		^(?=.*単語1|単語2)
単語1 を含まない			^(?!.*単語1)
単語1または単語2を含まない	^(?!.*単語1|単語2)
単語1と単語2を含まない		^(?!.*単語2.*単語1|.*単語1.*単語2)
単語1を含み単語2を含まない	^(?=.*単語1)(?!.*単語2)
単語1と単語2を含む			^(?=.*単語1)(?=.*単語2)

キーワードがデータに含まれているかチェックする例。

foreach ($sbj->classes()->get() as $cls) {
    if (preg_match('/'.$keyword.'/i', $cls->name) ||
        preg_match('/'.$keyword.'/i', $cls->description) ||
        preg_match('/'.$keyword.'/i', $cls->note)) {
        array_push($results, ["name"=>$sbj->name, "sbj"=>$sbj, "idx"=>$idx]);
        $idx += 1;
    }
}

Print Friendly, PDF & Email