[PHP] mb_ereg_match()は部分一致検索してくれないのね……

http://www.php.net/manual/ja/function.mb-ereg-match.php#86429

ユーザー投稿に書いてありますね。これをよく見なかったがために、数字一文字ひっかけるのにえらい苦労してしまいましたとさ(;ω;`)

以下、上記URLからの引用。

Note that this function matches a string from the beginning only (though not necessarily till the end):

<?php

$test = mb_ereg_match(“a”, “some apples”); // returns false
$test = mb_ereg_match(“a”, “a kiwi”);      // returns true

?>

If you want to check for a match anywhere in the string, use the wild-card & repeat operators .*

<?php

$test = mb_ereg_match(“.*a”, “some apples”); // returns true

?>

「この関数は前方一致しかしてくれないから、部分一致検索をしたいときは “.*” を使ってね!」 ということが書いてあると思います。多分。(しっかり読めてません)

まぁどうして引っかからないのか分かってよかったよかった(*´ω`)

(´・ω・`)ショボーン の「´」「`」をスムーズに打ち込むためのメモ

素直に辞書登録しとけばええやん。 という話はおいておいて……

MS-IMEでは「きごう」もしくは「てん」と打って出てくるながーーーいリストから探せばいいのですけど、俺がメインで使っているGoogleIMEでは「きごう」では出ますが、「てん」では出てこないんですよね。
いやまぁ「きごう」 で出るならべつにいいやん?という声も聞こえてこなくも無いですがとりあえずそんなのぶっちぎって、一発で変換できるスマートな方法があったので書いておきます。

GoogleIMEの場合、

「´」→「あきゅーと」を変換
「`」→「ぐらーぶ」 を変換

で、一発で出てきます。

「あきゅーと」「ぐらーぶ」とか、覚えてられる方が珍しいですわね。素直に「しょぼーん」と打ちましょう。Google先生が素晴らしい回答を出してくれます。

[jQuery][IE] select要素の中身をempty()で消去しても、なぜか画面には反映されない

さすがIE、色々やらかしてくれる……orz

jQuery(ver. 1.7.2)で、selectの子要素(option)を$(‘select’).empty()みたいなコードで消して、その中に違うoption要素を加える、という処理を書いたんですけれど、IE9(または8でも7でも)ではうまく動いてくれないんですね;;

正確に言うと、empty自体はうまく動いています。少なくともDOM上では消えています。しかし、見た目上はセレクトボックスに選択肢がばっちり残っている、という何ともおかしな状態になってしまっています。

仕方ないので、select要素そのものをempty(もしくはremove)して、消したものと同じ場所に新しいselect要素をappendなりしてぶち込みました。この場合はしっかりemptyの結果が反映されるんですよね。なんか無駄なことをやっているような気がしてならない……(;ω;`)

 

ECCUBE 商品カテゴリをDBから手動で登録するときの注意点メモ

ECCUBEのカテゴリ管理でのお話です。

カテゴリのCSV一括登録機能では、category_id, category_name, parent_category_id フィールドが入ったCSVをアップロードして一気に登録します。新規登録ならば、色々と自動的に割り振っていい感じにしてくれるかと思いますが、更新目的で一括登録機能を使用すると、カテゴリの構成を大幅に変更したとき、いろいろと不都合が生じます。(その前にそんな大幅な変更が入らないようにしっかり構成にしろって話ですが……)

その時は仕方ないのでDBを直接操作することになると思いますが、そこでの注意点をいくつかメモっておきたいと思います。

ますは、dtb_categoryテーブルの構造です。

  • category_id
    カテゴリID
  • category_name
    カテゴリ名
  • parent_category_id
    親カテゴリID
  • level
    階層
  • rank
    ランク
  • creator_id
    作成者ID
  • create_date
    作成日時
  • update_date
    更新日時
  • del_flg
    削除フラグ

ECCUBEのカテゴリは、階層上に構成することができます。その際の階層レベルはlevelフィールドで設定します。一番上が1で、あとは2,3……と設定していきます。あるカテゴリの子供としてカテゴリを設定変更した際は、この辺の変更をしないとおかしくなります;;

そして、おそらく一番面倒なのが順番の設定だと思います。rankフィールドの変更です。 ほかのECCUBEのテーブルと同様、降順で番号を割り振ります。つまり、番号の大きい順から並んで「1」がリストの一番下に配置されます。

……なんだかいちいち説明するのがめんどくさいので結論から言いますと、親カテゴリ「お菓子」のrankが10だとしたら、その子供になるカテゴリは 9,8,7 という具合に、親の連番としてrankを割り振った方が変な表示になりにくいです。どうしても連番にならなければ、親カテゴリと子供カテゴリの間には、別のカテゴリは入り込まないように注意するべきです。 処理上は問題ないみたいですが、表示上では別のカテゴリが紛れ込んでいるかのような見え方になってしまいます。

自分が実際に行ったやり方は、level1の親カテゴリには、あらかじめrank200個分ぐらいの間隔を取って番号を割り振り、その範囲の中で子カテゴリに番号を割り振っていきました。 こうすれば別のカテゴリ同士が混じることはないと思います。

なんだかごちゃごちゃな説明ですが、とりあえずこの辺で……

[JS] IEではconsole.log は(半分)使えないんですね……(;ω;`)

今の今までconsole.log()を残していたのが動かない原因だったと分からなかったよくそっくそっ!

そしてもっと腹が立つのが、デバッグモードではconsole.logは動くということ。つまり通常モードではエラーが出て、何がおかしいのかをデバッグモードで探そうとした途端、正常に動きやがる。さんざん悪事を働いているズル賢いいじめっ子が、先生にチクられても巧みにかわして、しかもその矛先がチクった方に向けられてしまったような、何言ってるかちょっとよく分からないですが、とにかく悲しい心境です(・ω・`;)

まぁいじめはいじめられる側にも問題があるんじゃないかという、めったくそ一方的な論理もありますが、console.logを残しておく方にも問題があるという論理はあまり一方的ではないわけで……リリースするときはもちろん消すべきですし……でもIEさんの方も、モードによって挙動が変わるっていうのは何とかしてほしいとも思うんですよねぇ……(小声)

検索してみると、いろんな人たちがコード内にconsole.logを残していたために悲しい気持ちになっていますね。ですがそこはみなさんすごいです。しっかり対処法を書きつけてくれています。参考になったので、リスペクトの意味を込めてリンクをぺたぺたします。

304 – narucissus is Not Modified: Firebugのconsole.logをIEでも使いたいとき  http://narucissus.blogspot.jp/2007/07/firebugconsolelogie.html

この悲しい出来事から得た教訓は、動かす前にはIE console.logは消せ!ということですかね……。