| @技術/プログラミング

 連休ブログいじりシリーズ第二弾(笑)(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のことが分かれば一瞬で改良できそうなんだけどなー。もどかしいぞー。ふんがー(意味不明)