MW211 EXIT

devlog
PHP/value属性のないPOSTの内容
2012年02月25日
┌──────────────────────────────────────┐
│<input type="hidden" name="キー" value="値"/>                               │
└──────────────────────────────────────┘
name属性とvalue属性を設定して、POSTでsubmitすれば
「$_POST['キー'] = '値'」が送信される。

name属性がない場合、例えばid属性とかだった場合は、「$_POST」は送信されない。
┌──────────────────────────────────────┐
│<input type="hidden" id="キー" value="値"/>                                 │
└──────────────────────────────────────┘

では、(name属性はあるのに)value属性がない場合、どうなるのか?
┌──────────────────────────────────────┐
│<input type="hidden" name="キー"/>                                          │
└──────────────────────────────────────┘
「$_POST['キー'] = ''」が送信される。
つまり、そのname属性で送信はされる。
ただ中身は、NULLと思いきや「''」(空文字)なんだね。
分類:PHP
正規表現/数値(3)
2012年02月24日
小数点以下も含めたい場合。

「-999.99~999.99」の範囲としたい場合。

「((0|\-?[1-9]\d{0,2})(\.\d{2})?)」

「.」だけではだめ「.00」と小数点以下の数字が必要ってこと。

「((0|\-?[1-9]\d{0,2})(\.\d{1,2})?)」

こうすれば「9.99」でも「9.9」でもOKとなる。
分類:正規表現
正規表現/数値(2)
2012年02月23日
負の数も含めたい場合。

「-999~999」の範囲としたい場合。

「(0|\-?[1-9]\d{0,2})」

「0」と「-999~-1」「1~999」みたいな感じか。
分類:正規表現
正規表現/数値(1)
2012年02月22日
「0123456789」を表すものは「[0-9]」か「\d」。

なので「\d\d\d」とすれば「000~999」の数値を表すことができる。

だが、数値は「001」ではなく「1」と書くもの。

なので、「1~999」としたい。

それには「[1-9]\d{0,2}」。

あ、「0」が抜けている、「0~999」だ。

でも「0」は別枠にせねばなるまい、よってこう。

「(0|[1-9]\d{0,2})」

「0」か「1~999」で「0~999」。
分類:正規表現
正規表現/任意の文字
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
前へ 1 … 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 … 156 次へ