文字列を数値に変換する
myNum = parseInt("500"); myNum = parseFloat("500"); myNum = Number("500"); myNum = "500" - 0;
文字列を数値に変換する
myNum = parseInt("500"); myNum = parseFloat("500"); myNum = Number("500"); myNum = "500" - 0;
myStr="123456"; myStr2=myStr.substr(0 ,2)
結果"12"
最初の文字を 0 番目。
から2つめの引数文字分返します。
負の値を指定すると後ろから数えます。
myStr="あれこれいろいろ"; KEKKA=myStr.replace(正規表現, 置換文字列) ;
myStr="123abc456def"; if (myStr.match(/456/i)) { alert("456"); }
iはオプション
オプション
i=大文字小文字を区別しない
g=2番目、3番目も検索する
m=複数行検索
myStr="123456"; num=myStr.length;
文字列の長さを調べます
aryNum=Math.abs(ary[N]);
<script type="text/javascript" language="JavaScript">
<!--
function jump()
{
location.href = "./index.php";
}
// -->
</script>
<body bgcolor="#ffffff" text="#191919" onLoad="setTimeout('jump()',500)">
この例ではロードされてからjump()が呼び出される。
<a href="javascript:submitgo('1');">
<input type="button" value="テスト" onclick="my_test()" />
window.setTimeout("JS", int)
intミリ秒後に指定した処理を行います。
JS にJavaScript の構文か関数名を記述します。
function test() { alert("一秒後にもう一回"); setTimeout("test()", 1000); } window.setInterval("JS", int)
指定した処理が intミリ秒毎に定期的に実行。
<script type="text/javascript">
<!--
function my_test(){
alert("test");
}
//-->
</script>
function myfnc(){ alert(); } onclick="myfnc()" ondblclick="myfnc()" onmousedown="myfnc()" onmouseup="myfnc()" onmouseover="myfnc()" onmouseout="myfnc()" onmousemove="myfnc()"
document.all(id).style.color=ff0000; document.all.item(id).style.color=ff0000;
はSafariで動かなかったので×
Safariでは下記のように書く
document.getElementById('1-0').style.color=ff0000;
このようにしてオブジェクトを指定する
selectの値を調べるには下記のようにする <!-- function jump(){ var TXT="" obj=document.jumpform.urlMenu; TXT=obj.options[obj.selectedIndex].value; url="menu"+TXT+".html"; location.href=url; } HTMLは。。。 <form name="jumpform"> <select name="urlMenu" onchange="jump()"> <option value="" SELECTED>選んでね。</OPTION> <option value="00">00年</OPTION> <option value="01">01年</OPTION> <option value="02">02年</OPTION> <option value="03A">03年前半</OPTION> <option value="03B">03年後半</OPTION> <option value="04A">04年前半</OPTION> </select> </form>
$sub=mb_convert_encoding($sub,'JIS','SJIS');
SJIS<=JIS
string mb_convert_encoding (str, to-encoding [, from-encoding])
strの文字エンコーディングを from-encoding から to-encoding に変換。
from-encodingは","区切りで複数記述可。省略すると内部文字エンコーディング
from-encodingを"auto"にすると"ASCII,JIS,UTF-8,EUC-JP,SJIS"
UCS-2LE
ASCII
JIS
UTF-7
UTF-8
EUC-JP
SJIS
eucjp-win
sjis-win
$num=intval("500");
こんな感じ。
$keyword = urlencode($keyword);
タグをはずす
TXT=strip_tags($TXT);
スラッシュを外す
stripslashesはaddslashesの反対
\をはぶく
str_pad ($str,3 [, " " [, option]])
文字列を3ケタになるように" "で埋める
オプションの引数には、
STR_PAD_RIGHT,
STR_PAD_LEFT,
STR_PAD_BOTHを指定可能です。
指定されない場合、STR_PAD_RIGHT 。
$M="1"; $M=str_pad($M,2,' ',STR_PAD_LEFT);
結果
$M=" 1"
$data=htmlspecialchars($data); #HTMLの特殊文字の変換(タグの禁止)
$sub=base64_encode($sub); $sub="=?ISO-2022-JP?B?".$sub."?=";
$data=addslashes($data); #DB格納用にメタ文字をエスケープ
\を加えるということ
$num= count ($ARY
if(in_array($STR,$ARY)){
$ARY内に$STRが存在するか?
$str=implode(",",$ary);
配列$aryを連結します。
区切り文字に","が入る
array_merge <?php $array1 = array ("key1" => "val1", 2, 4); $array2 = array ("a", "b", "key1" => "val2", "etc" => "val3", 4); $result = array_merge ($array1, $array2); print_r($result); ?>
同じkeyは後ろが優先。
[key1] => val2 [0] => 2 [1] => 4 [2] => a [3] => b [etc] => val3 [4] => 4
$list = array("A", "B", "C", "D", "E");
array_unshift ($menu,'<table width="100%" border="0"><tr>');
$ary=explode(",",$str);
文字列$strを
","区切りで配列に分解
逆は
$stringdata=implode(",",$ary);
$list1=array_map('trim',$list1);
$myList=array_unique($myList);
sort($todaylist);
戻り値なし。引数の配列がそのまま変更される
natsort($todaylist);
自然なsortになる。
配列のKEYでSORT
ksort($hash); krsort($hash);
$keyAry=array_keys($XML);
もっとも小さい値
min($ary)
もっとも大きい値
max($ary)
1つめの配列を削除
array_shift($list1);
N番目の要素を削除
$selectList=array_splice($selectList,$N); #N番目の要素を削除
include "./inc/userdata.php";
外部phpを読み込む
mbモジュールを使用する方法(Windows)
php.iniをC:\WINDOWSへ移動
;extension=php_mbstring.dll
の;をはずす
extension_dir = "./"を下記のように変更 extension_dir = "C:/php/extensions"
display_errors = On
これで表示
error_reporting = E_ALL & ~E_NOTICE
Macではこうしないと
なんでもかんでもエラーに。。。
$ID=$_POST[myID];
とかが受けれなくなってしまう。
<?php phpinfo(); ?>
で調べることができる。
MacOSXの場合は
/usr/local/php/lib/php.ini
. 改行以外のすべての文字 [a-zA-Z0-9] セット内の1文字 [^a-zA-Z0-9] セット以外の1文字 \d 数字 \D 数字以外 \w 英数字 \W 英数字以外 \s スペース・tab・改行 \S スペース・tab・改行以外 \n 改行chr(10) \r 復帰chr(13) \t tab \f 改ページ \b バックスペース \0 ヌル文字 ? 0または1個 * 0個以上 + 1個以上 {m,n} m個以上n個以下 abc abcにHIT a|b|c aかbかcにHIT $ 行の最後 ^ 行の先頭
$TXT=preg_replace('/¥([0-9,]*)/',$fomat[$N2].'¥'.'$1</b></font>',$TXT);
if(preg_match("/^KDDI/",$TANMATSU)){$URL="indexk.php";}
戻り値はint
preg_match("/^(.*)/",$moto, $matches); print $matches[0];
$matches[0]はパターン全体にマッチしたテキスト。 $matches[1]は最初の括弧付きのサブパターンにマッチしたテキスト 。
$ARY=preg_grep($data,$ARYmoto);
$dataは正規表現
$ARYmotoは配列。
配列の中から$dataにHITする配列を取り出す。
$data=ereg_replace("\n","<br>",$data);#改行コードの変換
大文字小文字を区別しない
$data=eregi_replace("http://","",$url);
s (PCRE_DOTALL)
この修飾子が設定された場合、
パターン中のドットメタ文字は
改行を含む全ての文字にマッチ。
これを指定しない場合、改行は除かれます。
この修飾子は、Perl の /s 修飾子と等価です。
切上げ
ceil(数値);
切捨て
floor(数値);
四捨五入
round(数値);
書き込む
fwrite($fp,"text");
ファイルロック
flock($fp,operation) ロックはfopenの直後にロック解除はfcloseの直前に operation LOCK_SH 共有ロック。読み込み可 LOCK_EX 排他的ロック 読み書き不可 LOCK_UN ロック解除 ※ファイルを閉じる前に実行。 $log="./count.dat"; $fp=fopen($log,"r+"); if(!$fp){ print "ファイルを開けませんでした。"; exit; } flock($fp,LOCK_EX); $count=fread($fp,filesize($log)); rewind($fp); $count++; fwrite($fp,$count); flock($fp,LOCK_UN);#ファイルを閉じる前に実行。 fclose($fp); サンプル function fWRITEGO($file,$writeTXT){ $FLG=true; #print $file; $fp=fopen($file,"w");#書き込み fpはfileの先頭 if($fp){ flock($fp,LOCK_EX); fwrite($fp,$writeTXT); flock($fp,LOCK_UN);#ファイルを閉じる前に実行。 fclose($fp); }else{$FLG=false;} chmod($file,0766); }
$filename = 'data.csv'; if (file_exists($filename)) { echo "最終更新日:" . date ("F d Y H:i:s.", filemtime($filename)); }
touch($lock);#空のファイルを作成する
改行区切りで配列がかえってくる。
$list1=file($file);
改行や余分なスペースを削除。
$list1=array_map('trim',$list1);
1つのテキストにしたい時は下記で
配列を結合する。この場合上のtrimはしない。
$StrData=implode("",$list1);
開く
$fp=fopen(filename,"mode");
エラーのときは$fpは空になる。if(!$fp)で確認
modeは
r 読み込み fpはfileの先頭
r+ 読み書き fpはfileの先頭
w 書き込み fpはfileの先頭 fileがなければ作成※開いた瞬間ファイルの中身が空になる。
w+ 読み書き fpはfileの先頭 fileがなければ作成※開いた瞬間ファイルの中身が空になる。
a 書き込み fpはfileの終端
a+ 読み書き fpはfileの終端
※+がつくのは全部読み書き
閉じる
fclose($fp);
ファイルサイズを調べる。
filesize(filename);
読み込む
fread($fp,バイト数);
バイト数はファイルサイズを調べて入れる。
このとき読み込んだバイト分カーソルも移動してしまう。
全部読み込むとファイルの最後にカーソルが移動する。
カーソルを先頭に移動する。
rewind($fp);
<?php $targetdir="./datafolder/"; $DIRLIST=GETDIRLIST($targetdir); if($DIRLIST<>""){ foreach($DIRLIST as $buf){ print $buf." "; } } #★★★★★★★★★★★★★★★★★★★★★# #★★★ フォルダ内リスト作成 ★★★# #★★★★★★★★★★★★★★★★★★★★★# function GETDIRLIST($targetdir){ if($targetdir==""){ return ""; } if(!file_exists($targetdir)){ return ""; } $dir=dir($targetdir); while(($ent=$dir->read()) !== FALSE){ if(eregi('.+xml$|.+html$',$ent)){ $DIRLIST[]=$ent; } } return $DIRLIST; } ?>
$baksize=filesize($filebak);
if(file_exists($lock)){ unlink($lock); }
ファイルを消す
bool unlink (filename)
0=false
1=trueで返ってくる
if(file_exists($file)){ #ファイルがあるなら }
書き込みに常に2つのファイルに書き込んでおき
開くときにファイルサイズの大きい方を開く。
バックアップがないときも下記で新たに作られる。
function READLIST($readFile){ $readFile=fGETBAK($readFile); if(file_exists($readFile)){ $LIST=file($readFile); } $LIST=array_map('trim',$LIST); return $LIST; } #★★★★★★★★★★★★★★★★★★★★★# #★★★ バックアップファイル名をGET ★★★# #★★★★★★★★★★★★★★★★★★★★★# function fGETBAK($file){ $filebak=$file.".bak"; #####比較########### if(file_exists($filebak)){ $baksize=filesize($filebak); }else{ $baksize=0; } if(file_exists($file)){ $fsize=filesize($file); }else{ $fsize=0; } if($baksize>$fsize){ #要領が大きいほうを小さい方にコピーする。 copy($filebak,$file); chmod($file,0766); $refile=$filebak; }elseif($baksize<$fsize){ copy($file,$filebak); chmod($filebak,0766); $refile=$file; } return $refile; } #★★★★★★★★★★★★★★★★★★★★★# #★★★ バックアップファイルにも書き込み ★★★# #★★★★★★★★★★★★★★★★★★★★★# function fWRITEBAK($file,$wStr){ if(file_exists($file)){ $fp=fopen($file,"w");#書き込み fpはfileの先頭 } if($fp){ flock($fp,LOCK_EX); fwrite($fp,$wStr); flock($fp,LOCK_UN);#ファイルを閉じる前に実行。 fclose($fp); } #さらにバックアップもしておく。 if(file_exists($file.".bak")){ $fp=fopen($file.".bak","w");#書き込み fpはfileの先頭 } if($fp){ flock($fp,LOCK_EX); fwrite($fp,$wStr); flock($fp,LOCK_UN);#ファイルを閉じる前に実行。 fclose($fp); } }
is_dir($file);
掲示板などで使われるmkdirロック
#★★★★★★★★★★★★★★★★★★★★★# #★★★ ファイルロック ★★★# #★★★★★★★★★★★★★★★★★★★★★# function mkdirLook(){ global $lock; if(file_exists($lock)){ #ファイルが存在して時間が昔のものなら消しておく。 $list=(stat($lock)); $ftime=$list[ctime]; $mytime=time(); if($mytime-5>$ftime){mkdirunlock();} } $retry=5; while(file_exists($lock)){ if($retry==0){ #ロックに失敗したらエラーを返す。 return false; exit; } sleep(1); $retry--; } #成功したら touch($lock);#空のファイルを作成する chmod($lock,0755); return true; }
#★★★★★★★★★★★★★★★★★★★★★#
#★★★ ロック解除 ★★★#
#★★★★★★★★★★★★★★★★★★★★★#
function mkdirunlock() {
global $lock;
if(file_exists($lock)){
unlink($lock);
}
}
mkdir($fol,0766);
copy($file, $file.'.bak')
0=false
1=trueで返ってくる
chmod($file,0666);
権限を変える
<?php $user_agent= explode( "/", $_SERVER['HTTP_USER_AGENT']); $TANMATSU=$user_agent[0]; if($TANMATSU=="DoCoMo"){$URL="indexk.php";} elseif($TANMATSU=="L-mode"){$URL="indexk.php";} elseif($TANMATSU=="ASTEL"){$URL="indexk.php";} elseif($TANMATSU=="UP.Browser"){$URL="indexk.php";} elseif($TANMATSU=="PDXGW"){$URL="indexk.php";} elseif($TANMATSU=="J-PHONE"){$URL="indexk.php";} elseif(preg_match("/^KDDI/",$TANMATSU)){$URL="indexk.php";} else{$URL="demo.html";} header("Location: ".$URL); ?>
header("Refresh:600");
単位秒
##########ここからプロクシチェック############# $FLG=false; $IP=getenv(REMOTE_ADDR); $HS=getenv(REMOTE_HOST); if($HS==""){$HS=gethostbyaddr($IP);} $PO=getenv(REMOTE_PORT); #.jp 、.bbtec.net 、 .il24.net 以外は規制 if(!eregi('\.jp|\.bbtec.net|\.il24\.net|localhost',$HS)){$FLG=true;} #以下の環境変数に何か含まれてたらアウト if(getenv(HTTP_VIA)){$FLG=true;} if(getenv(HTTP_CACHE_INFO)){$FLG=true;} if(getenv(HTTP_SP_HOST)){$FLG=true;} if(getenv(HTTP_FORWARDED)){$FLG=true;} if(getenv(HTTP_FORWARDED_FOR)){$FLG=true;} if(getenv(HTTP_X_FORWARDED_FOR)){$FLG=true;} if(getenv(HTTP_CLIENT_IP)){$FLG=true;} #ホスト名にprox squid cache www dns firewall if(eregi('prox|squid|cache|www|dns|firewall',$HS)){$FLG=true;} if($FLG==true){ ERREXIT("プロクシ経由での予約は現在行っておりません。"); }
#このファイルをインクルードするだけでチェックできる。 $NAME="KIRARI"; $OVERTIME=30;#単位分 $URL="./login.php"; $COOKIEFLG="true"; if(isset($_COOKIE[$NAME])){ $time=$_COOKIE[$NAME]; $timeflg1=time()-$time; $timeflg2=60*$OVERTIME; if($timeflg1>$timeflg2){ $COOKIEFLG="timeover"; setcookie($NAME); setcookie($NAME,0,0); }else{ setcookie($NAME); setcookie($NAME,time(),0); } }else{$COOKIEFLG="false";} if($COOKIEFLG=="true"){ return; }
if(isset($_COOKIE[$NAME])){
$time=$_COOKIE[$NAME];
# 日付が過去 header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); # 常に修正されている header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); # HTTP/1.1 header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); # HTTP/1.0 header("Pragma: no-cache");
どれだけがんばってもIEはキャッシュするのでファイル名を動的に変更する必要がある。
setcookie("KIRARI",time(),0); setcookie("KIRARIUSER",$ID,0);
引数は
クッキー名,クッキーの値,有効期限
有効期限はtime()ユニックスまたはmktime()関数で作られる
UNIXタイムスタンプ形式
setcookie($NAME); setcookie($NAME,0,0);
値を何も入れないとクッキーを消せる
header("Location: ".$URL);
転送先設定で届いたメールをPHPに転送するようにしておく
PHPでは転送されたメールを読み込んで処理する。
●設定1転送設定
さくらサーバ
コントロールパネルで
メールアドレスの管理
該当するメールの転送設定を作成する(転送先はなんでもいい)
FTPでさくらサーバに接続
/home/アカウント名/MailBox/メールID/
に.mailfilterができているので、内容を
to "| /usr/local/bin/php /home/アカウント名/www/test.php" exit
に書き換えてアップ。
※要注意!パーミッションは600!!!
●設定2PHP
/home/アカウント名/www/test.phpの内容
#!/usr/local/bin/php -q <?php set_time_limit(0); $stdin = fopen("php://stdin", "r"); while(!feof ($stdin)){ $mail .= fgets($stdin, 4096); } fclose ($stdin); $fp = fopen('./mail.txt', "a"); set_file_buffer($fp, 0); flock($fp, 2); fwrite($fp, $mail); flock($fp, 3); fclose($fp); ?>
1行目の#!/usr/local/bin/php -qは必要!
動かすとでき上がるmail.txtを解析すればOK
チェックボックスの値の送受信
こんな感じで送ると
<td><input type="checkbox" name="FB[1]" value="2004/11/08">08</td> <td><input type="checkbox" name="FB[2]" value="2004/11/09">09</td> <td><input type="checkbox" name="FB[3]" value="2004/11/10">10</td> <td><input type="checkbox" name="FB[4]" value="2004/11/11">11</td> <td><input type="checkbox" name="FB[5]" value="2004/11/12">12</td>
こんな感じで受け取れる。
$FB=$_POST[FB]; if(!$FB){$FB[]="";} foreach($FB as $buf){ print $buf; }
$FBにはvalue値が入る
if($_SERVER['REQUEST_METHOD']=="POST"){ $TXT=hESC($_POST[file]); }
$IP=getenv(REMOTE_ADDR);
$IP=getenv(REMOTE_ADDR); $HOST=getenv(REMOTE_HOST); if($HOST==""){$HOST=gethostbyaddr($IP);} if(eregi("yahoobb219029008014|localhost",$HOST)){#proxやsquidが含まれる。 return ""; } $PORT=getenv(REMOTE_PORT);
■ユーザー情報の取得
$ip=$_SERVER["SERVER_ADDR"]; $blowser=$_SERVER["HTTP_USER_AGENT"]; print "<h2>あなたのIPアドレスは".$ip."です</h2>"; print "<h2>あなたのブラウザは".$blowser."です</h2>";
$btnName=$_POST[submit];
<form action="image.php" method="post" name="f"> <input type="hidden" name="MAX_FILE_SIZE" value="100000"> アップロードファイルを選択してください。 <input type="file" name="img" size="40"> <input type="submit" name="upload" value="アップロード"> if($_POST[upload]=="アップロード"){ $fomatfol="./imgfolder"; hSAVEIMG($fomatfol,$_FILES); } #★★★★★★★★★★★★★★★★★★★★★# #★★★ $_FILEを保存 ★★★# #★★★★★★★★★★★★★★★★★★★★★# function hSAVEIMG($imgFol,$_FILES){ if($_FILES['img']['name']){ #print $_FILES['img']['name']."";#クライアントマシンの元のファイル名。 #print $_FILES['img']['tmp_name']."";#アップロードされたファイルがサーバー上で保存されているテンポラ リファイルの名前。 #$_FILES['img']['type']#ファイルのMIME型。ただし、ブラウザがこの情報を提供する場合。 例えば、"image/gif"のようになります。 #$_FILES['img']['size']#アップロードされたファイルのバイト単位のサイズ。 #print $_FILES['img']['error']; $kakucyou=$_FILES['img']['type']; if (strpos($kakucyou,"jpeg")>0){$kakucyou="jpg";} elseif (strpos($kakucyou,"jpg")>0){$kakucyou="jpg";} elseif (strpos($kakucyou,"gif")>0){$kakucyou="gif";} elseif (strpos($kakucyou,"png")>0){$kakucyou="png";} else{$kakucyou="";} if($kakucyou<>""){ copy($_FILES['img']['tmp_name'],$imgFol.$_FILES['img']['name']); } } }
background-repeat: no-repeat;
repeat(敷き詰める)
repeat-x(横方向のみ並べる)
repeat-y(縦方向のみ並べる)
no-repeat(ひとつだけ表示する)
inherit(継承)
background-position: center center;
left(左端)
center(中央)
right(右端)
50% のような割合
top(上端)
center(中央)
bottom(下端)
50% のような割合
background-image: url(image/back.gif);
url(画像のパス)
background-color:#ffffff;
color
色の名前
transparent(既定値:透明色)
inherit(継承)
background-attachment:fixed;
scroll(一緒にスクロールする)
fixed(スクロールしない)
inherit(継承
background:#ff00ff url(image/back.gif) no-repeat fixed 50% 50%; }
color
色の名前
transparent(既定値:透明色)
inherit(継承)
url(画像のパス)
repeat
repeat(敷き詰める)
repeat-x(横方向のみ並べる)
repeat-y(縦方向のみ並べる)
no-repeat(ひとつだけ表示する)
inherit(継承)
attachment
scroll(一緒にスクロールする)
fixed(スクロールしない)
inherit(継承)
position
left(左端)
center(中央)
right(右端)
50% のような割合
top(上端)
center(中央)
bottom(下端)
border-top: 2px solid #444444; border-left: 2px solid #444444; border-right: 2px solid #aaaaaa; border-bottom: 2px solid #aaaaaa;
場所を指定
position: absolute; top: 201px; left: 0;
こんな感じで絶対位置指定。
margin: top right bottom left
枠の外側の余白です。
上下左右の余白を指定します。
padding: top right bottom left
内側の余白はpaddingを使います。
2.0em, 2px, 120%
上下左右=1px
padding: 1px;
上下=1px、左右=5px
padding: 1px 5px;
上=1px、左右=5px、下=3px
padding: 1px 5px 3px;
上=1px、右=5px、下=3px、左=10px
padding: 1px 5px 3px 10px;
text-justify: auto;
text-align: justify; と組み合わせて使用し、単語間や文字間のスペースを調整する方法を指定
auto(既定値)
newspaper(英文向け)
inter-word(単語間のみによる調整)
distribute-all-lines(最後の行も調整)
inter-ideograph(単語間と文字間による調整)
inter-cluster(アジア言語向け)
distribute(タイ言語向け)
kashida(アラビア語向け)
text-indent: 12px;
字下げを指定
text-align: auto;
left(左寄せ)
right(右寄せ)
center(センタリング)
justify(両端揃え)
inherit(継承)
font-weight:bold;
bold, bolder, lighter,
100, 200, 300, 400, 500, 600, 700, 800, 900
a { background-color: transparent; color: "#003399"; text-decoration: underline; } a:hover { background-color: transparent; color: "#999933"; text-decoration: underline; } a:active { background-color: transparent; color: #396; text-decoration: none; }
<style type="text/css">
<!--
a{font-size:"12pt";color:#0000ff;font-family: 'MS ゴシック','Osaka'; }
a:Visited{font-size:"12pt";color:#0000ff;font-family: 'MS ゴシック','Osaka'; }
a:Active{font-size:"12pt";color:#ff0000;font-family: 'MS ゴシック','Osaka'; }
a:hover{font-size:"12pt";color:#ff0000;font-family: 'MS ゴシック','Osaka'; }
-->
</style>
<link rel="stylesheet" href="../style.css" type="text/css">
A and B AとB
A && B AとB
A or B AかB
A || B AかB
!A Aではない。
■変数
$data普通の変数
$data0配列
$data[name]連想配列
配列に値を入れるとき下記で自動でaddしてくれる。
$data[]="A"
$data[]="B"
$data[]="C"
$data=array("A","B","C")これでも同じ(arrayは関数名)
$data=array("1"=>"A","2"=>"B","3"=>"C")これも同じ。連想配列にも使える。
■比較演算子
A > B A < B A >= B A <= B A == B等しい A <> B違う★
★条件分岐
if ($data == "朝"){ print "おはようございます"; }elseif($data == "昼"){#★ print "こんにちは"; }else{ print "こんばんは"; }
■算術演算子 A + B A = B A * B A / B A % B A/Bのあまり A++ Aに1を足す A- Aから1をひく
include "./bfnc.php";
break;
http://www.php.net/download-docs.php
mt_rand(5, 15);
5~15の乱数を生成する
$_GET[name]でGETで送信されたformのnameの内容を調べる。(旧バージョンでは$HTTP_GET_VARS)
$_POST[name]でPOSTで送信されたformのnameの内容を調べる。(旧バージョンでは$HTTP_POST_VARS)
$_ENV環境変数(旧バージョンでは$HTTP_ENV_VARS)
$_SERVERサーバー変数(旧バージョンでは$HTTP_SERVER_VARS)
$_COOKIEクッキーの値(旧バージョンでは$HTTP_COOKIE_VARS)
$_REQUESTゲットやクッキーやポストの内容全てが収納されるが下位互換なし。
$_FILESアップロードされたファイルの情報が入ります。(旧バージョンでは$HTTP_POST_FILES)
$_SESSIONセッションモジュールにより登録された内容が格納される。(旧バージョンでは$HTTP_SESSION_VARS)
$FLGがtrueの間繰り返す
while($FLG){ if($bufAry==""){$FLG=false;} else{ } } }
sleep(1);
時間のかかる処理の場合下記のようにすると
90秒はエラーが出ない
set_time_limit(90);
■functionの作り方
function OpenDB($data="デフォルト値"){
#引数が無ければデフォルト値が使われる。
return $data;
}
OpenDB($data);
for文
for($i = 1 ; $i <= 10 ; $i++){
print "数値は".$i."です。";
}
$i=1;
while ($i <= 10){
print "数値は".$i."です。";
$i++;
}
foreach文(連想配列のキーと値を取り出せる。)★
$price=array("りんご"=>120,"みかん"=>80,"ぶどう"=>150);
foreach($price as $key=>$value)
{
print $key."は".$value."円だよ";
}
do文。評価が最後に来る
$i=1;
do{
print "数値は".$i."です。";
$i++;
}while($i <= 10);
「INSERT」、「UPDATE」のクエリする直前に
mysql_query("SET NAMES utf8")
mysql_query("SET NAMES ujis")
mysql_query("SET NAMES euc")
などで文字コードを指定しておくと
文字化けしないで登録できる。
?>
#mysql_affected_rowsの関数で変更がかかったかどうかチェックできます。 if(!mysql_affected_rows()){ #直前のupdate文で変更がかかっていなかったら。 ErrorPrint("パスワードが違います。"); exit; }
値の取り出し。
$myAry=mysql_fetch_array($result,option);
例
#全てのデータを連想配列で取り出す。
$arr_data=mysql_fetch_array($result,MYSQL_ASSOC);print $arr_data[name].",";
print $arr_data[e_mail].",";
print $arr_data[title].",";
print $arr_data[url].",";
print $arr_data[contents].",";
print $arr_data[remote_host].",";
print $arr_data[datetime].",";
print $arr_data[serial];
★レコード分どうやって取り出すか
$arr_data=mysql_fetch_array($result,MYSQL_ASSOC);
for ($i=1;$i<=$row;$i++){
#全てのデータを連想配列で取り出す。
$arr_data=mysql_fetch_array($result,MYSQL_ASSOC);
$name = stripslashes($arr_data[name]);
$mail = stripslashes($arr_data[e_mail]);
$title = stripslashes($arr_data[title]);
$url = stripslashes($arr_data[url]);
$contents = stripslashes($arr_data[contents]);
$remote_host = $arr_data[remote_host];
$datetime = $arr_data[datetime];
$serial = $arr_data[serial];
}
#全てを選択のクエリーを発行。 $sql="select * from bbs where delflg='N' order by datetime desc limit ".$tmp.",".($limit+1);
function OpenDB($ID,$PASS){$user = $ID;#"COOP";
$pass = $PASS;#"coopsql";
$dbname = "kirari";###MySQLへの接続
###mysql_connect(server名,ユーザー名,パスワード)$con = @mysql_connect("localhost",$user,$pass);
#mysql_connectの返り値を$conに代入する
#失敗した場合は、「@」が関数の前についているので、$conには何も入らない
if(!$con){
#もし$conが変数として存在しない場合(中身が空の場合・値が0の場合・値がfalseの場合)
ErrorPrint("MySQLへの接続に失敗しました","MySQL接続エラー");
exit;
}
#DBの選択
$result = mysql_select_db($dbname);
#$result = mysql_query("use ".$user);
if(!$result){
ErrorPrint("DBの選択に失敗しました","DB接続エラー");
exit;
}}
$sql="insert into Smaster set "; $sql.=returnQuery($fieldNameList,0); #★★更新のsqlクエリ★★★★★★★★★★★★★★ $sql=stripslashes($sql); $result = mysql_query($sql); if(!$result){ return $_POST[ef0]."の新規保存に失敗しました。"; }else{ return $_POST[ef0]."を新規保存しました。"; }
★Databaseからselect
$sql="select * from bbs";
$result=mysql_query($sql);
・selectできた数を調べる
$row=mysql_num_rows($result)
★mysqlへの接続。
$con=@mysql_connect(server名,ユーザー名,パスワード);
$con=@mysql_connect("localhost",$user,$pass);
if(!$con){
//エラー処理
}
DataBaseへinsert
$sql="insert into bbs set name='$db_name',e_mail='$db_mail',title='$db_title',";
$sql.="url='$db_url',contents='$db_cont',remote_host='$ip',datetime=now()";
$result=mysql_query($sql);
if(!$result){
//エラー処理
}
$result=mysql_select_db(データベース名)
print "";printは一行
echo "aaaaa bbbbbbbb ccccccccc";echoは;がでるまでつづけられる。
function bGETYOUBI($year,$mon,$day){ #任意の日付けで曜日を出す $youbi=array('日','月','火','水','木','金','土'); $y=$year; $m=$mon; $d=$day; if ($m < 3) {--$y; $m+=12;} $w=($y+ floor($y/4) - floor($y/100) + floor($y/400)+ floor((13*$m+8)/5) + $d) % 7; return "$youbi[$w]";#.$hol; }
function GETHOLIDAY($year){ ###############ここから################★★★★★日の決まった祝日★★★★★★★★★★★★★★★★★★★
$HOLARY = array('test','','','0101','0211','0429','0503','0505','1103','1123','1223');
#★★★★★春分・秋分日を計算(1980-2099まで有効)★★★★★★★★★$dirY = 1980;
$syunbun = (int)(20.8431 + 0.242194*($year - $dirY) - (int)(($year - $dirY)/4));
$syubun = (int)(23.2488 + 0.242194*($year - $dirY) - (int)(($year - $dirY)/4));
$HOLARY[1] = ($year <= "2099") ? "03".substr("0".$syunbun,-2) : '';
$HOLARY[2] = ($year <= "2099") ? "09".substr("0".$syubun,-2) : '';#★★★★★日の決まっていない祝日(何月第何月曜)★★★★★★
$mARY = array("01", "07", "09", "10");
$dARY = array("2", "3", "3", "2");
for($N=0;$N<4;$N++){
$monbuf=$mARY[$N];
$syu=$dARY[$N];
$youbibuf=strftime('%a',mktime(12,00,00,$monbuf,1,$year,0));#$Mon1月の1日の曜日を調べる
$shuARY=array("Sun"=>2,"Mon"=>1,"Tue"=>7,"Wed"=>6,"Thu"=>5,"Fri"=>4,"Sat"=>3);
$daybuf=$shuARY[$youbibuf];#これで最初の月曜日の日付がでる。
$daybuf+=($syu-1)*7;#これで何週目の月曜が指定できる。
if($daybuf<10){$daybuf=bTWOKETA($daybuf);}#2桁数字に整える。
$HOLARY[]=$monbuf.$daybuf;
}#★★★★★★★★★★ここから振替休日★★★★★★★★★★★
foreach($HOLARY as $buf){
$Mbuf=substr($buf,0,2);
$Dbuf=substr($buf,2,2);
$youbi=bGETYOUBI($year,$Mbuf,$Dbuf);
if($youbi=="日"){
$Dbuf++;
$Dbuf=bTWOKETA($Dbuf);
}
$HOLARY2[]=$Mbuf.$Dbuf;
}#★★★★★★★★★★ここから休日と休日の間・国民の休日を検索★★★★★★★★★★★
foreach($HOLARY2 as $buf){
$HOLARY3[]=$buf;
$Mbuf=substr($buf,0,2);
$Dbuf=substr($buf,2,2);
$Dbuf2=bTWOKETA($Dbuf+2);
if(array_search ($Mbuf.$Dbuf2, $HOLARY2)){
if(bGETYOUBI($year,$Mbuf,$Dbuf)<>"土"){
$HOLARY3[]=$Mbuf.bTWOKETA($Dbuf+1);
}
}
}
return $HOLARY3;}
$myTime=time();1970/1/1 0:00:00 からの経過秒数
$myTime=mktime(22,45,5,7,5,2004);時,分,秒,月,日,年
UNIXタイムスタンプを返す
$time=time(); $time=microtime();
$myTime=time(); $ARY = getdate($myTime);
配列が戻り値
[seconds] => 40
[minutes] => 58
[hours] => 21
[mday] => 17
[wday] => 2
[mon] => 6
[year] => 2003
[yday] => 167
[weekday] => Tuesday
[month] => June
[0] => 1055901520
date(Y);//年4ケタ date(n);//月 date(m);//月2ケタ date(j);//日 date(d);//日2ケタ date(H);//時 date(i);//分
a :午前または午後(小文字) am or pm
A :午前または午後(大文字) AM or PM
B :Swatch Internet time 000 から 999
d :日。二桁の数字(先頭にゼロがつく場合も) 01 から 31
D :曜日。3文字のテキスト形式。 Mon から Sun
F :月。フルスペルの文字。 January から December
g :時。12時間単位。先頭にゼロを付けない。 1 から 12
G :時。24時間単位。先頭にゼロを付けない。 0 から 23
h :時。数字。12 時間単位。 01 から 12
H :時。数字。24 時間単位。 00 から 23
i :分。先頭にゼロをつける。 00 to 59
I :(大文字の i) サマータイム制か否か 1ならサマータイム制。 0ならそうではない。
j :日。先頭にゼロをつけない。 1 から 31
l :(小文字の 'L') 曜日。フルスペル形式。 Sunday から Saturday
L :閏年であるかどうかを表す論理値。 1なら閏年。0なら閏年ではない。
m :月。数字。先頭にゼロをつける。 01 から 12
M :月。3文字形式。 Jan から Dec
n :月。数字。先頭にゼロをつけない。 1 から 12
O :グリニッジ標準時(GMT)との時間差 Example: +0200
r :RFC 822 フォーマットされた日付 Example: Thu, 21 Dec 2000 16:01:07 +0200
s :秒。先頭にゼロをつける。 00 から 59
S :英語形式の序数を表すサフィックス。2 文字。 st, nd, rd or th. Works well with j
t :指定した月の日数。 28 から 31
T :このマシーンのタイムゾーンの設定。 Examples: EST, MDT ...
U :Unix 時(1970年1月1日0時0分0秒)からの秒数 See also time()
w: 曜日。数値。 0 (日曜)から 6 (土曜)
W ISO-8601 月曜日に始まる年単位の週番号 (PHP 4.1.0で追加) Example: 42 (the 42nd week in the year)
Y :年。4 桁の数字。 Examples: 1999 or 2003
y :年。2 桁の数字。 Examples: 99 or 03
z :年間の通算日。数字。 0 から 366
Z :タイムゾーンのオフセット秒数。 UTCの西側のタイムゾーン用のオフセットは常に負です。そして、 UTCの東側のオフセットは常に正です。
sidebar.phpの
<h3>Categories</h3> <ul> <?php wp_list_categories('title_li='); ?> </ul>
の下に下記を挿入します。
<? if($_GET[cat]){ $cat = 'category='.$_GET[cat]; $cathtml = '&cat='.$_GET[cat]; $catname = get_cat_name($_GET[cat]); }else{ $catname = "最新"; } print '<h3>'.$catname.'の記事一覧</h3>'; $post_data = get_posts($cat); if($post_data){ foreach($post_data as $post){ ?> <li><a href="<?the_permalink();?><?=$cathtml?>"><?the_title();?></a></li> <? } } ?>