連休ブログいじりシリーズ第二弾(笑)(portal shit! : 世間は連休なのに引きこもってブログで遊んでても(・∀・)イイ!)
P_BLOGの詳細検索でカテゴリー検索を行う場合、カテゴリーが2バイト文字、いわゆる全角文字を含んでいるカテゴリーは正しく検索されない。1バイト文字、いわゆる半角英数字だけで構成されているカテゴリーは問題なく検索される。
この現象についてP_BLOGの公式フォーラムに書き込んでみたけど、誰からも反応がなかった。誰もこの問題で困ってないのだろうか。僕は自分で書いた過去ログを結構読み返すので、全角カテゴリーを検索対象にできないのは正直困る。僕のブログのカテゴリー名はほとんど全角文字だからだ。他のP_BLOGで構築されたサイトでもこっそり全角カテゴリー検索をやってみたけど、同じ問題に遭遇した。
しかしプラグイン開発を行ったり、P_BLOGの開発に関わったりしている猛者の方々のブログを拝見すると、カテゴリー名で全角文字を使っている方はおられないようだ。皆さんちゃぁんと半角英数字でカテゴリー名を構築してらっしゃる。そもそもカテゴリー名に全角文字を使うこと自体が問題なのだろうか。
今日はcategory.phpをいじったので、その勢いでエイヤっと詳細検索をつかさどるPHPファイルをエディターで開いてみた。search_plus.phpを見ていると、何だかヒントが見えてきそうである。116行目あたりが猛烈にニオう。
// Category if ((isset($_GET['cat'])) && ($_GET['cat'] != '')) { $cat = array($_GET['cat']); if (is_array($cat[0])) { $sql .= ' AND ('; $sql .= "`category` LIKE '%".$cat[0][0]."%'"; for ($j = 1; $j < sizeof($cat[0]); $j++) { $sql .= " OR `category` LIKE '%".$cat[0][$j]."%'"; } $sql .= ')'; }
category.phpでは、カテゴリー検索について
//===================================== // CATEGORY LIST UP QUERY -- HOW? //===================================== $patterns = '/(?*|?+|?^|?$|??|?(|?))/'; // (1) Use "LIKE" search $listup_query = "BINARY category LIKE '".$key."%')";
となっていた。"BINARY category"という言葉が猛烈にアヤシイ。んあー、PHPのことが分かれば一瞬で改良できそうなんだけどなー。もどかしいぞー。ふんがー(意味不明)