投稿者別アーカイブ: nocturne-project - ページ 38

10秒でわかるPHPの正規表現※

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のプロパティとしてグローバル配列変数を作成し、その結果を代入します。ただ、セキュリティの観点からなのかイベントの発火は何度やってもだめでした。親ウィンドウの変数に代入するくらいしかできないようです。

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のプロパティとしてグローバル配列変数を作成し、その結果を代入します。ただ、セキュリティの観点からなのかイベントの発火は何度やってもだめでした。親ウィンドウの変数に代入するくらいしかできないようです。