array_slice($array, [何番目から], [何個]);
$array = ("い", "ろ", "は", "に", "ほ"); $sliced_array = array_slice($array, 0, 3); ← い、ろ、は が新しい配列の中に格納されます。 $sliced_array = array_slice($array, 2); ← は、に、ほ が新しい配列の中に格納れます。
Just another Front-end Engineer
array_slice($array, [何番目から], [何個]);
$array = ("い", "ろ", "は", "に", "ほ"); $sliced_array = array_slice($array, 0, 3); ← い、ろ、は が新しい配列の中に格納されます。 $sliced_array = array_slice($array, 2); ← は、に、ほ が新しい配列の中に格納れます。
count($array);
$array = ("い", "ろ", "は", "に", "ほ"); $array_cnt = count($array); print $ array_cnt; ←5が出力されます。
日付が入っているカラムで、一ヶ月前までのデータを抽出する
$today = date(“Y-m-d”);
$onemonthago = date(“Y-m-d”,strtotime(“-1 month”));
$sql = “select colum_A, colum_B from tbl_A where colum_C between ‘” . $onemonthago . “‘ and ‘” . $today . “‘”;
シェルスクリプトとcronでアクセス毎の時間、url、ホスト名を日ごとに別ファイルに記録する
1)サイト内の各ページ(phpファイル)にアクセス毎にログファイル(log.dat)に記入していくよう記述する
$year = date('Y'); $month = date('m'); $day = date('d'); $hour = date('H'); $hostip = getenv("REMOTE_ADDR"); $hostname = gethostbyaddr($hostip); $platform = get_browser(null, true); $browser = $platform["parent"]; /*** アクセス情報を一件のレコードとする ***/ $log = $hour . "," . $item_id . "," . $hostip . "," . $hostname . "," . $browser . "\r\n"; /*** 記録するファイル名 ***/ $countfile = "log.dat"; /*** レコードを末尾へ記入 ***/ $fp = @fopen($countfile,"a"); fputs($fp, $log); fclose($fp);
使った関数 | |
getenv(“REMOTE_ADDR”) | アクセス元のIPアドレスを取得する |
gethostbyaddr | IPアドレスからホスト名を取得する |
get_browser(null, true) | ブラウザ情報を取得する |
2)毎日夜中にlog.datを[日付].datへコピーして消去する
log.datを[日付].datへコピーして内容を消去するのshellスクリプトlog_bk.shを作成します。
#!/bin/sh fecha=`date '+%Y%m%d'` ←日付(fecha)を取得 cp -p log.dat ${fecha}.dat ←log.datを日付.datへコピー cat /dev/null >log.dat ←log.datへnullを書き込み消去
上記のスクリプトを毎日23時59分に実行するようcronを設定します。
#crontab -e
でツールを起動して/etc/crontabを編集します。
viと同じ感じで操作します。
59 23 * * * /[ディレクトリ]/log_bk.sh
と記入。
数字は左から、分、時間、日、月、週 を指定し、実行するファイル名を記入して保存。
#crontab -l
で記入した内容が表示されればOKです。
1)log.datの中身をDBへ格納するphpファイルlog.phpを作成する
$file_name = "/hoge/log.dat"; $text = fopen($file_name,'r'); while(!(feof($text))){ $lines = fgets($text); $_line = explode(",", $lines); $sql = "insert into tbl_log (itm_id, log_ip, log_month, log_day, log_hour, log_year) values ('" . $_line["1"] . "', '" . $_line["2"] . "', '" . $month . "', '" . $day . "', '" . $_line["0"] . "', '" . $year . "')"; $rst = mysql_query($sql,$con)or die("no"); } fclose($text);
使った関数 | |
fopen | ファイルを開く。’r’は読み込み専用 |
feof | ファイルの最後かどうかをチェックする |
explode(“[区切り記号]”, “[文字列]”) | 文字列を区切り記号で区切って配列に格納する |
2)log.phpを毎日実行させる
crontabへ記述します。
58 23 * * * /usr/bin/php /hoge/logtodb.php
phpをcronで実行させるにはcrontabへphpへのパスを指定する必要があります。
user/bin/phpは
which php
で調べます。
配列の初期化
$dirlist = array(); $udate = array();
ディレクトリ内のファイル名を取得して$strDirに格納
$filedir = ディレクトリ名; $strDir = opendir($filedir)or die("couldnt open directory");
ディレクトリの内容を順に配列$dirlistに格納
while($str = readdir($strDir)){ array_push($dirlist,$str); }
ファイルの総数を $files へ格納
$files = count($dirlist);
カウンターを初期化
if(!($counter)){ $counter = 0; }
ファイルのパスを$openfilepassへ格納する
while ($counter < $files){ $openfile = $dirlist["$counter"]; $openfilepass = $filedir . "/" . $dirlist["$counter"]; $counter ++; }
ファイルの更新日を取得して配列の格納する
$mod = filemtime($openfilepass); $ud = date("Y/m/d H:i", $mod); array_push($udtime,$ud);
ファイル名と更新日の二次元配列ができます
$list_array = $array($dirlist,$udtime);
ファイル名順でソートする
array_multisort($list_array[0], SORT_STRING, SORT_ASC, $list_array[1], SORT_STRING, SORT_ASC);
日付の新しい順でソートする
array_multisort($list_array[1], SORT_STRING, SORT_DESC, $list_array[0], SORT_STRING, SORT_ASC);
確認
print_r($list_array);
参照URL:
http://metaboy.blog23.fc2.com/blog-entry-114.html
http://d.hatena.ne.jp/devillikeaangel/20090409/1239263385
pow( )
引数で与えられた数値を指数の数だけ掛け合わせ、その結果を返します。
ただし、累乗が計算できない場合には、警告が発生し「false」」を返します。
数値のn桁目の数字を取得するには
10のn乗で割った余りを求める。
使用例
$numero=213
$a = $numero % (pow(10,1));
print $a;
3
$numero=213
$a = $numero % (pow(10,2));
print $a;
13
また忘れそう。。。
unlink を使う。
if(file_exists($del_file)){ <font color=red>unlink</font>($del_file)or die('couldnt delete the file'); }
最初から〜文字の場合は0から
$txt = supercalifragilisticexpialidocious; $check = substr($txt,0,6); print $txt
出力結果は → superc
6文字目から10文字
$txt = supercalifragilisticexpialidocious; $check = substr($txt,6,10); print $txt
出力結果は → alifragili
後ろから10文字目のトコから6文字
$txt = Pseudoantidisestablishmentarianism; $check = substr($txt,-10,6); print $txt
出力結果は → ntaria
後ろから10文字目のトコから後ろから6文字目のトコまで
$txt = Hepaticocholangiocholecystenterostomies; $check = substr($txt,-10,-6); print $txt
出力結果は → rost
保存先のフォルダを選べる画像アップローダを作成する
upload.phpのフォーム部分を記述します。
[upfile][name] ファイル名
[upfile][type] ファイルタイプ image/jpeg など
[upfile][tmp_name] アップロードされたファイルに一時的につけられる、パスを含むテンポラリファイル名 /tmp/phpJP00Aqなど
[upfile][error] エラーがなければ0
[upfile][size] ファイルサイズ
が送られます。
phaseがreceiveだったら受け取る部分を実行します
if($phase == ‘receive’){
/*** 受け取ったあとの処理 ***/
if( is_uploaded_file($_FILES[“upfile”][“tmp_name”])or die(“its not uploaded file”)){
if( move_uploaded_file($_FILES[“upfile”][“tmp_name”], $_POST[“folder”] . $_FILES[“upfile”][“name”])or die(“couldnt move the file”)){
chmod($_POST[“folder”] . $_FILES[“upfile”][“name”], 0644);
$file_name = $_POST[“folder”] . $_FILES[“upfile”][“name”];
$message = “ファイルをアップロードしました。