• Javascriptで連想配列 hoge[“map”] が使えない理由

    連想配列を作ろうと思い hoge[“map”] = 1 と代入しようとしたらエラーが発生した。
    なぜなんだろうと思い調べたら、下記の記載を見つけた。

    JavaScriptの配列ってmapとかfilterとかあったんだ – phithonの日記

    [“map”]は .mapとしても使えるので、予め配列にはmapメソッドが定義されていたらしい。mapは全ての配列の値に対して計算を行い配列を返すメソッドらしい。こんな便利なものがあったとは知らなかった。

    .filterというのは、ifのような条件式のようだ。これを使うと絞込みをできる。.sortは名前の通りソート。こんな簡単にソートができたなんて驚き。よって、hoge[“filter”]にも代入できない。

  • すぐ使えるPHPの正規表現サンプル

    GoogleでPHPの正規表現について検索しても直感的に使えるようなサンプルがなかったので書きました。

    正規表現がマッチした数を返す『preg_match』

    $hoge = preg_match("/h..e/", "hoge");
    print($hoge);
    //結果:1Code language: PHP (php)

    正規表現がマッチした部分を置換する『preg_replace』

    $hoge = preg_replace("/h..e/", "hage", "hagehigehugehegehoge");
    print($hoge);
    //結果:hagehagehagehagehageCode language: PHP (php)

    正規表現がマッチした部分を区切り文字として配列変数に分割して代入する『preg_split 』

    $hoge = preg_split ("/h..e/", "ahagebhigechugedhegeehogef");
    print_r($hoge);
    //結果:Array ( [0] => a [1] => b [2] => c [3] => d [4] => e [5] => f )Code language: PHP (php)

    正規表現でマッチした部分を取得する

    $hoge = preg_match("/h..e/", "hoge", $m);
    print($m[0]);
    //結果:hogeCode language: PHP (php)

    正規表現でグループにした部分を取得する

    $hoge = preg_match("/hoge(hage)hige/", "hogehagehige", $m);
    print($m[1]);
    //結果:hageCode language: PHP (php)
  • PHPで画面推移なしでファイルをアップロードしてその情報を親ウィンドウの変数に代入する

    Javascript側

    function uploadFile() {
        $("#form").submit();    //jQuery
        return false;
    }
    
    window.hoge = [];
    <form id="form" action="/upload" method="post" enctype="multipart/form-data" target="iframe">
    <input name="upload" type="file" onchange="uploadFile();">
    </form>
    <iframe name="iframe"></iframe>Code language: JavaScript (javascript)

    PHP側

    $upload_dir = "/www/var/html/public/";    //ディレクトリはあらかじめ作っておく。Windowsの場合C:\\から
    move_uploaded_file($_FILES['upload']['tmp_name'], $upload_dir . $_FILES['upload']['name']);
    chmod($upload_dir . $_FILES['upload']['name'], 0666);
    parent.window.formdata[0] = "<?php print($_FILES['upload']['name']); ?>";Code language: PHP (php)

    テストはしてないので間違いがあるかもしれません。window.formdataのプロパティとしてグローバル配列変数を作成し、その結果を代入します。ただ、セキュリティの観点からなのかイベントの発火は何度やってもだめでした。親ウィンドウの変数に代入するくらいしかできないようです。