MW211 EXIT

devlog
正規表現/否定の勘違い
2012年03月31日
否定、つまりその文字以外を該当させるのはこんな感じ。
「[^■]」

「a」でも「b」でもないってしたい場合は、この中に並べればよい。

「[^a^b]」
で、これは誤り。

「[^ab]」
が正解。

先頭に一回否定「^」を書けば、以降すべて否定の対象になる。

「^+検索対象文字」ではなく、「[^]」をセットとして覚えてしまおう。
分類:注意、正規表現
JavaScript/クリップボードへデバッグ
2012年03月30日
InternetExplorerにてJavaScriptの変数をクリップボードに出力する方法。
┌──────────────────────────────────────┐
│clipboardData.setData("Text", 変数);                                        │
└──────────────────────────────────────┘
処理を実行すると、クリップボードに変数の内容が出力されるので、
メモ帳などに「貼り付け」すると、その内容がテキストとして取得できる。
分類:JavaScript
PHP/全角トリム
2012年03月29日
┌──────────────────────────────────────┐
│trim($変数);                                                                │
└──────────────────────────────────────┘
PHPのトリム関数「trim()」は半角スペースしか除去してくれない。

全角スペースも除去したいのであれば、
以下のように正規表現をつかって除去してしまう方法がある。
┌──────────────────────────────────────┐
│preg_replace('/^[ △]+|[ △]+$/u', '', $変数);                              │
└──────────────────────────────────────┘
  ※△の部分は、全角スペースにしてください

正規表現の置換は処理が遅いらしいが、それほど気にならないかも。

あ、「trim()」はスペース以外にもタブとかも除去してくれるんだった。

ってことで、「trim()」の既定の除去対象文字を洗い出したところ以下の通り。
  「 」   …(0x20)半角スペース
  「\t」  …(0x09)タブ
  「\n」  …(0x0A)復帰(改行)
  「\r」  …(0x0D)改行
  「\0」  …(0x00)NULL
  「\x0B」…(0x0B)垂直タブ

なので、以下のようにすれば完璧!
┌──────────────────────────────────────┐
│preg_replace('/^[△ \t\n\r\0\x0B]+|[△ \t\n\r\0\x0B]+$/u', '', $変数);      │
└──────────────────────────────────────┘
分類:PHP
正規表現/直前直後の組み合わせ
2012年03月28日
直前と直後に特定の文字があるもしくはないものを検索する組み合わせは以下の通り。
┌──┬─────┬─────┐
│    │   直前   │   直後   │
├──┼─────┼─────┤
│あり│ (?<=z)a  │ a(?=z)   │
├──┼─────┼─────┤
│なし│ (?<!z)a  │ a(?!z)   │
└──┴─────┴─────┘
※「a」と「z」は文字列の例(何の文字列でもよい)

「az,za,ay,ya」があったとしたら、上記の正規表現に該当するのは以下の通り。
┌──┬─────┬─────┐
│    │   直前   │   直後   │
├──┼─────┼─────┤
│あり│    za    │    az    │
├──┼─────┼─────┤
│なし│azとyaとay│zaとyaとay│
└──┴─────┴─────┘
但し、該当するとみなされる文字(検索文字)はそれぞれの「a」のみ。

ちなみに前後の文字も含みたい場合は以下の通り
┌──┬─────┬─────┐
│    │   直前   │   直後   │
├──┼─────┼─────┤
│あり│    za    │    az    │
├──┼─────┼─────┤
│なし│  [^z]a   │  a[^z]   │
└──┴─────┴─────┘
ただし、こちらは改行やら区切文字やらも該当してしまうので、
上記のように該当するものがはっきりするとは限らない。
→あくまで理論上の対比と考えてもらいたい
分類:正規表現
正規表現/前に特定の文字がつかないものを検索
2012年03月27日
「a」単体や、「ac」の「a」は検索できるけど、「ab」の「a」は検索できない
つまり、後ろに「b」が続かない「a」を検索する正規表現は以下の通り。
┌──────────────────────────────────────┐
│a(?!b)                                                                      │
└──────────────────────────────────────┘

ではこの反対は(前に「b」がない「a」)というと…
┌──────────────────────────────────────┐
│(?!b)a                                                                      │
└──────────────────────────────────────┘
ではない。
→これだと、「ba」の「a」も該当してしまう。

正解はこれ。
┌──────────────────────────────────────┐
│(?<!b)a                                                                     │
└──────────────────────────────────────┘
と、「<」がいれてあげなければならない。

なんでも「a」を基準にして、さかのぼって左側を見てあげなければならないので
さかのぼりに記号「<」が必要らしい。
分類:注意、正規表現
PHP/アップロードファイルサイズ
2012年03月26日
アップロードできるファイルサイズの最大サイズの設定は、「php.ini」で行う。
ただし、関係するパラメータがいくつかあり、以下のように設定せねば反映されない。
┌──────────────────────────────────────┐
│「memory_limit」≧「post_max_size」≧「upload_max_filesize」                │
└──────────────────────────────────────┘
分類:PHP
PHP/クッキー
2012年03月25日
クッキーの設定方法と参照方法は以下のような感じ。
┌──┬───────────────────────────────────┐
│設定│setcookie('クッキー変数名', 値);                                      │
├──┼───────────────────────────────────┤
│参照│$_COOKIE['クッキー変数名']                                            │
└──┴───────────────────────────────────┘

ただし、設定されるのは、そのスクリプトが終了した時なので、
以下のような場合、設定された値はechoされない。
┌──────────────────────────────────────┐
│$変数 = '値';                                                               │
│setcookie('クッキー変数名', $変数);                                         │
│echo $_COOKIE['クッキー変数名'];  // →''                                   │
└──────────────────────────────────────┘

なので、そのスクリプトでクッキー変数の値を使いたい場合は、
設定元を(分岐して)使う必要がある。
┌──────────────────────────────────────┐
│$変数 = '値';                                                               │
│setcookie('クッキー変数名', $変数);                                         │
│echo $変数;  // →'値'                                                      │
└──────────────────────────────────────┘

ちなみに、以下のように直接代入すると、
そのスクリプト内ではクッキー変数に値が代入されているが、
実際のクッキーの中身には値は入らないので、次画面以降では値はクリアされてしまう。
┌──────────────────────────────────────┐
│$_COOKIE['クッキー変数名'] = '値';                                          │
│echo $_COOKIE['クッキー変数名'];  // →'値'                                 │
└──────────────────────────────────────┘
一瞬設定が成功したかのような錯覚に襲われるので注意が必要。
分類:PHP、注意
jQuery/onイベント
2012年03月24日
onなんとかイベントとjQueryの(等価)関係は以下のとおり。
┌───────────────────┬──────────────────┐
│<id="id" onblur="function(){■}">     │$("#id").blur(function(){■});      │
├───────────────────┼──────────────────┤
│<id="id" onchange="function(){■}">   │$("#id").change((function(){■});   │
├───────────────────┼──────────────────┤
│<id="id" onkeydown="function(){■}">  │$("#id").keydown(function(){■});   │
├───────────────────┼──────────────────┤
│<id="id" onkeypress="function(){■}"> │$("#id").keypress(function(){■});  │
├───────────────────┼──────────────────┤
│<id="id" onkeyup="function(){■}">    │$("#id").keyup(function(){■});     │
├───────────────────┼──────────────────┤
│<id="id" onmousedown="function(){■}">│$("#id").mousedown(function(){■}); │
├───────────────────┼──────────────────┤
│<id="id" onmousemove="function(){■}">│$("#id").mousemove(function(){■}); │
├───────────────────┼──────────────────┤
│<id="id" onmouseout="function(){■}"> │$("#id").mouseout(function(){■});  │
├───────────────────┼──────────────────┤
│<id="id" onmouseover="function(){■}">│$("#id").mouseover(function(){■}); │
├───────────────────┼──────────────────┤
│<id="id" onmouseup="function(){■}">  │$("#id").mouseup(function(){■});   │
└───────────────────┴──────────────────┘
分類:jQuery
jQuery/スクロール領域の末尾を表示する
2012年03月23日
┌──────────────────────────────────────┐
│$("#識別子").scrollTop($("#識別子")[0].scrollHeight);                       │
└──────────────────────────────────────┘

「scrollTop()」メソッドでスクロール位置を指定するが、
そこに「scrollHeight」プロパティ(つまりスクロール位置の最大値=末尾)を入れる。
分類:jQuery
正規表現/「1~999」を判定
2012年03月21日
┌──────────────────────────────────────┐
│^([1-9][0-9][0-9]|[1-9][0-9]|[1-9])$                                        │
└──────────────────────────────────────┘
上記のように、「100~999」or「10~99」or「1~9」とする?

いやいや。

┌──────────────────────────────────────┐
│^[1-9][0-9]?[0-9]?$                                                         │
└──────────────────────────────────────┘
上記だと、or条件なしに一発で指定できる。

つまり「?」は、「ある」かもしれないし「ない」かもしれないという意味。
分類:正規表現
前へ 1 2 3 次へ