http://www.ietf.org/rfc/rfc2396.txt URI にASCII以外の値を入れる際は、16進にエンコードしなければな らないことが知られている。仮にNULL文字がエンコードされた場合、 %00 となる。 検索エンジンに入力された文字列を解析するために、URIエンコード された文字列をデコードしていたら「%00」のパターンに出会った。 まさかこんなものが検索文字列に紛れてくるとは思わなかった。。 PHP的には「ほげほげ[NULL]」と「ほげほげ」は違う文字列であるが、 PostgreSQL 的には同じと見做される。これが元でduplicate key errorとなったのだ。 $str = preg_replace('/[\000-\017]/', '', $str); として対処。 #けど、こういう行儀の悪い検索文字列の入力の類ってわざとやって #るのかどうかは