SQL文をPHPの正規表現関数を使って書き換える。この正規表現がなかなかうまくかけなくてハマッタ。
元のクエリの対象部分はこんな感じ。
hoge LIKE ‘%bar%’ AND fuga LIKE ‘%www%’
お題は、ANDの前の部分( hoge LIKE ‘%bar%’) を捕まえて、以下のようにしたい。もちろんbar や wwwは不定。
(SELECT id FROM xxx WHERE hoge LIKE ‘%bar%’) AND fuga LIKE ‘%www%’
そこで、最初書いたパターンがこれ。
“hoge LIKE ‘%.*%’”
確かに最初はうまく動いているかに見えたんだけど、これだと、最初のお題の文章全体がヒットしちゃうのね。つまり、hoge LIKE ‘% の % から始まって、 www%’ の %までが 「.*」で表現されていることになる。結局お題の文章全体がヒットしてしまい、期待通りではないことが判明。 Continue reading