MW211 EXIT

devlog
正規表現/任意の文字
2012年02月21日
任意の文字的なものをまとめてみた。
「.」 …正規表現における任意の一文字
        数値表現における単なる小数点の場合もあるが
        任意の一文字は小数点一文字も含むので、
        小数点のつもりが気づかず勘違いしたままということもありうる
「*」 …MS-DOS(Windows)におけるワイルドカード
        正規表現的には「.*」と同等
        正規表現では「直前の文字を0回以上繰り返す」の意味となる
「%」 …SQLのLIKE検索におけるワイルドカード
「_」 …SQLのLIKE検索における任意の一文字
        Windows環境のファイル名に使えるなど各種制約にとらわれにくい文字で
        通常の世界ではこの文字自体をあまり使わないので
        空欄に見せて、任意、未決定もしくはトラブルによる欠落っぽいイメージを
        表現できる
「 」 …空欄として、任意、未決定もしくはトラブルによる欠落っぽいイメージを
        表現できるが、両端に配置する場合には、開始・終了の境界文字が必要で
        「 」を文中に許容する場合には見分けがつかないので使えない
        穴埋めテストで慣れ親しんでいるが、プログラムでは用いられない
「?」 …謎の一文字として、任意、未決定もしくはトラブルによる欠落っぽいイメージを
        表現できる
        実際に文字化けの場合「?」になるケースもある
        正規表現では「直前の文字を0~1回繰り返す」の意味となる
「0」 …数値項目を表す「0-9」
        特にゼロパディングを表す場合に使われる(Excelなど)
「9」 …数値項目を表す「1-9」「0-9」
        「0」との対比でゼロサプレイスを表す場合が多い
        COBOLの世界で9タイプといえば数値型を意味する
「#」 …数値項目を表す「1-9」「0-9」
        「0」との対比でゼロサプレイスを表す場合が多い(Excelなど)
「X」 …COBOLの世界でXタイプといえば半角文字型を意味する
「S」 …符号を表す「+-」
        大抵は符号がない場合(正の数の場合)も許容するので
        どちらかというと負の数を許容することを表すもの
「-」 …符号を表す「-」
        前述の「S」同様、負の数を許容することを表すもの
「N」…COBOLの世界でNタイプといえば全角文字型を意味する
        「NIHONGO」の頭文字か
「 」…「 」の全角版
        表示上、全角空白文字を特殊記号で表示する環境(エディタなど)でしか
        判別できないので、
「_」…「_」の全角版
        プログラム的にはほとんど用いられない(文書(仕様書等)の世界でのもの)
「■」…文字化けした場合に変換されやすい文字
        転じて任意の一全角文字を表すが
        プログラム的にはほとんど用いられない(文書(仕様書等)の世界でのもの)
「□」…穴埋め空欄的な表現
        プログラム的にはほとんど用いられない(文書(仕様書等)の世界でのもの)
「△」…仕様書上、全角空白を表す記号
        ちなみに「▲」が金額の前につくと「-」(負の符号)
他に以下など
「!」
「@」
分類:正規表現
正規表現/そっくりさん
2012年02月19日
そっくりさんだと微妙に違うが、これは正真正銘同じもの同士。

「[0-9]」=「\d」

「?」=「{0,1}」
分類:正規表現
PHP/SQL文のIN句をつくる(2)
2012年02月18日
┌──────────────────────────────────────┐
│$where = array(1,,,4,,5);                                                   │
└──────────────────────────────────────┘
上記のように抽出条件に空値が混じっている場合、これを除外するには
以下の方法が有効だ。
┌──────────────────────────────────────┐
│$in = implode(',', array_filter($where, 'strlen'))             →  「1,4,5」│
└──────────────────────────────────────┘
「array_filter(,'strlen')」は文字長のある配列要素のみを抽出してくれる。
それぞれを「strlen()」にて変換した結果、
値が0でないものを抽出してくれるという仕組みだ。
分類:PHP、SQL
PHP/SQL文のIN句をつくる(1)
2012年02月17日
┌──────────────────────────────────────┐
│$where = array(1,4,5);                                                      │
└──────────────────────────────────────┘
┌──────────────────────────────────────┐
│SELECT 列                                                                   │
│    FROM 表                                                                 │
│    WHERE id IN (1,4,5);                                                    │
└──────────────────────────────────────┘
抽出したいIDを配列にあらかじめ格納しておいて、
そのIDに該当するものをSQL文で取得する場合、
配列をimplodeで一直線に並べて、SQL文に代入したやればよい
┌──────────────────────────────────────┐
│$in = implode(',', $where)                                     →  「1,4,5」│
└──────────────────────────────────────┘
┌──────────────────────────────────────┐
│SELECT 列                                                                   │
│    FROM 表                                                                 │
│    WHERE id IN ({$in});                                                    │
└──────────────────────────────────────┘

ちなみに、文字列の場合、「'」で囲う必要があるが、
これについては以下のようにしてやればよい。
┌──────────────────────────────────────┐
│$in = "'" . implode("','", $where) . "'"                 →  「"1","4","5"」│
└──────────────────────────────────────┘
分類:PHP、SQL
PHP/name属性のないform部品
2012年02月16日
┌──────────────────────────────────────┐
│<input type="hidden" name="キー" value="値"/>                               │
└──────────────────────────────────────┘
formの中に上記のようなものを定義して(POSTで)submitすると、
飛び先に「$_POST['キー'] = '値'」みたいな情報(POSTパラメータ)が渡される。

以下のようにname属性を定義しないと何も渡されない。
┌──────────────────────────────────────┐
│<input type="hidden" value="値"/>                                           │
└──────────────────────────────────────┘

なので、JavaScriptでいろいろするために以下のようなhidden属性を定義すれば
POSTパラメータに影響を与えることはない。
┌──────────────────────────────────────┐
│<input type="hidden" id="キー" value="値"/>                                 │
└──────────────────────────────────────┘

┌──────────────────────────────────────┐
│<input type="submit" name="submit" value="決定"/>                           │
└──────────────────────────────────────┘
ちなみに、上記のようなsubmitボタンを定義して、押された場合
「$_POST['submit'] = '決定'」みたいな情報が渡されるが、
以下のようにname属性を定義しないと何も渡されない。
┌──────────────────────────────────────┐
│<input type="submit" value="決定"/>                                         │
└──────────────────────────────────────┘
分類:PHP
PHP/アクセス修飾子の組み合わせ(1)
2012年02月15日
継承した時のアクセス修飾子の組み合わせってどうなのかをまとめてみた。

┌──────────────────────────────────────┐
│class 親 {                                                                  │
│  public $a = '親';  ←★                                                   │
│}                                                                           │
├──────────────────────────────────────┤
│class 子 extends 親 {                                                       │
│  public $a = '子';  ←★                                                   │
│  public function method() {                                                │
│    return $this->a;                                                        │
│  }                                                                         │
│}                                                                           │
└──────────────────────────────────────┘
上記のようなクラスで、以下のようにechoした場合、
★の部分のアクセス修飾子の組み合わせで、どうなるのかを調べた。
┌──────────────────────────────────────┐
│$子 = new 子();                                                             │
│echo $子->method();                                                         │
└──────────────────────────────────────┘

結果は以下の通り(×はエラー)。
┌─────┬─────┬─────┬─────┬─────┐
│  親\子  │(定義なし)│ private  │protected │  public  │
├─────┼─────┼─────┼─────┼─────┤
│(定義なし)│    ×    │    子    │    子    │    子    │
├─────┼─────┼─────┼─────┼─────┤
│private   │    ×    │    子    │    子    │    子    │
├─────┼─────┼─────┼─────┼─────┤
│protected │    親    │    ×    │   (子)   │   (子)   │
├─────┼─────┼─────┼─────┼─────┤
│public    │    親    │    ×    │    ×    │   (子)   │
└─────┴─────┴─────┴─────┴─────┘
個人的に一方のみ定義するか、一方はprivateってのが美しい形なのではないかと思う。
よって、イレギュラーだと思うものを括弧書きにした。
これらはいわゆるオーバーライド(問答無用の上書)ってやつだ。
後はエラーになるケースを抑えておきたいところだ。
分類:PHP
PHP/SQLインジェクション対策における%と_
2012年02月14日
LIKE演算子とセットで使うワイルドカードの「%」と「_」。
「'」とかと同じものだから、所定の手続きをとれば上手い具合に
やってくれそうな錯覚におそわれる。

例えば、addslashes()では何もしてくれない。

検索文字中に「%」や「_」が含まれている場合には
自力で「\%」や「\_」にしなきゃならない

「WHERE name LIKE %サクラ\%オー%」みたいになればよい

ついでに「\」も「\\」にしなければならない。
分類:PHP、PDO
JavaScript/特定の文字が何文字含まれているか
2012年02月13日
┌──────────────────────────────────────┐
│文字数 = 対象.length - 対象.replace(/文字/g, "").length;                    │
└──────────────────────────────────────┘
数えたい文字を除去してしまい、その前後で文字数を比較すれば、
文字数がわかるという魂胆。

┌──────────────────────────────────────┐
│2 = "いっぱい".length - "いっぱい".replace(/い/g, "").length;               │
└──────────────────────────────────────┘
みたいな感じ。
分類:JavaScript
CSS/幅のem指定
2012年02月12日
「1em」はなぜか半角1文字分の横幅ではなく、全角1文字分の横幅と同じ。

あれ、日本語の人が決めた規格なの?なぜに全角?

と思ったら、横幅ではなく縦幅が基準なんだって。

なっとく。

※等幅フォント(横幅×2=縦幅)を前提としたお話です
分類:CSS
(無題)
2012年02月11日
Happy Birthday to You!
前へ 1 … 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 … 156 次へ