Password_Hashing関数 2016年10月21日 18:40   編集
パスワードがハッシュにマッチするかどうかを調べる
password_verify ( パスワード(str) , ハッシュ(str) )

password_hash() が作ったハッシュが元のパスワードと一致するか調べるが、crypt()で作ったハッシュの照合もできる。
$str = 'abcd';
$p_hash = password_hash($str, PASSWORD_DEFAULT);
$crp = crypt($str,'');
if (password_verify($str,$p_hash)) {
echo "パスワード一致\n";
}
if (password_verify($str,$crp)) {
echo "パスワード一致\n";
}
実行結果
パスワード一致
パスワード一致
counter:2,700
Password_Hashing関数 2016年10月19日 10:05   編集
パスワードハッシュを作る
password_hash ( 文字列(string) , アルゴリズム(integer) [, オプション(array) ] )
アルゴリズムは
PASSWORD_DEFAULT PASSWORD_BCRYPT CRYPT_BLOWFISH
などが使えるようだが、今のところどれを使っても結果は同じように見える。
PASSWORD_DEFAULTを使えば、将来もっと強力なアルゴリズムが追加されれば、それに変更されるということらしい。
オプションの使い方は不明。
$str = 'abcd';
$p_hash = password_hash($str, PASSWORD_DEFAULT);
echo $p_hash;
実行結果
$2y$10$Fe9m/IWTrv8rXWk8VLFpq.9JKwz.7sy685ezOuFk4tiprjHIurfl2
$2y$10$acXpA204vAshERD8JOPez.BWsSh5vcmxC1SAUm/7CHxwfAJyokjKa
など
counter:2,943
String関数 2016年10月18日 15:03   編集
文字列の一方向のハッシュ化を行う
crypt(文字列[,ソルト])
ソルトは省略可能ということになっているが、環境(PHPのバージョン?)によってはエラーになる。
echo crypt('文字列','');
実行結果
$1$bW3.I33.$wWES7J0RXxa8AB7eZTo4W0
$1$xX4.mb5.$HZ1Dn4pSa6HQ2d4ttfBTW/
$1$1V3..v0.$oPXRm8PrIcOykpjqAKYAy1
など 実行するたびに違う
counter:3,130
配列関数 2016年10月05日 15:40   編集
配列のキーと値を反転する

配列の場合、値が重複していても問題ないが、同じキーの配列の値は1個だけとなる。
したがって元の配列で値が重複していた場合、反転すると同じキーが複数存在することになるが、この場合、最後のキーだけが採用されることになる。
$ar = array('ab'=>'xy', 'cd'=>'yz', 'ef'=>'xy' );
$ar2 = array_flip($ar);
foreach ($ar2 as $key=>$val) {
echo "$key → $val\n";
}
実行結果
xy → ef
yz → cd
counter:2,675
String関数 2016年10月05日 15:40   編集
文字列から HTML および PHP タグを取り除く
$str = "<strong>タグに囲まれた文字列</strong>";
print strip_tags($str);
counter:2,849
PCRE関数 2016年10月04日 13:52   編集
正規表現文字をクオートする
実行時に生成される文字列をパターンとしてマッチングを行う際、文字列に正規表現の特殊文字がはいっていた場合にクォートするという使い方ができる
preg_quote( 文字列 [,デリミタ] )
正規表現の特殊文字. \ + * ? [ ^ ] $ ( ) { } = ! < > | : -をクォートするが、/ は入っていない。/ もクォートしたい場合はデリミタに追加する
$keywords = '$40 for a g3/400';
$keywords = preg_quote($keywords, '/');
echo $keywords;
実行結果
\$40 for a g3\/400
counter:2,765
PCRE関数 2016年10月04日 13:32   編集
正規表現検索および置換を行う
preg_replace ( 検索パターン(文字列か配列) , 置換パターン(文字列か配列) , 置換対象(文字列か配列) [, 置換最大回数(int) [, 置換回数 ]] )

置換回数を使う場合は初期値を設定しておかないとエラーになる。
またその前の置換最大回数も空白のままだとエラーになる。
デフォルトの-1(無制限)などを指定する必要がある。
$str = 'a12bcd345ef6789gh01ij';
$count = 0;
$str2 = preg_replace( '/\d{3,}+/' , '□' , $str , -1 , $count );
print "\$str2=$str2\n";
print "\$count=$count\n";
実行結果
$str2=a12bcd□ef□gh01ij
$count=2
counter:2,902
配列関数 2016年10月04日 13:05   編集
配列に値があるかチェックする
in_array ( 捜す値 , 配列 [,オプション])
$os = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {
echo "Got Irix";
}
実行結果
Got Irix
counter:2,769
変数操作関数 2016年10月04日 12:53   編集
変数が配列かどうかを検査する
is_array(変数)
変数が配列の場合はTRUE、そうでない場合はFALSEを返す
counter:3,020
配列関数 2016年10月03日 20:08   編集
複数の多次元の配列をソートする

本来の使用法とは違うが、シュウォーツ変換風の使用例
$list = array('abc,52,オレンジ','def,32,りんご','hij,6,バナナ','klm,21,キウイ');
$sort = array();
foreach ($list as $_) {
$tmp = explode(',',$_);
if (isset($tmp[1])) {
$sort[] = $tmp[1];
}
}
array_multisort($sort,SORT_ASC,SORT_NUMERIC,$list);
foreach ($list as $_) {
echo "$_\n";
}
実行結果
hij,6,バナナ
klm,21,キウイ
def,32,りんご
abc,52,オレンジ
counter:2,839
日付・時刻関数 2016年10月03日 12:52   編集
スクリプト中の日付/時刻関数で使用されるデフォルトタイムゾーンを設定する
date_default_timezone_set('Asia/Tokyo');
counter:3,299
日付・時刻関数 2016年10月03日 12:44   編集
新しいDateTimeオブジェクトを返す。
DateTime::__construct()のエイリアス
date_create(文字列[,タイムゾーン])
文字列を省略すると現在の時間のDateTimeオブジェクトを取得
$obj = date_create('',new DateTimeZone('Asia/Tokyo'));
echo date_format($obj, 'Y-m-d H:i:s');
上記のようにタイムゾーンを指定してDateTimeオブジェクトを取得してもいいが、
いちいち指定するのは面倒なので、
さきにdate_default_timezone_setでタイムゾーンを指定しておく方が簡単。
date_default_timezone_set('Asia/Tokyo');
counter:2,927
PCRE関数 2016年09月30日 19:52   編集
正規表現を使って文字列を検索する
preg_match ( パターン , マッチ対象文字列 [, 検索結果 [, フラグ [, 検索の開始位置 ]]] )
$str = 'abcd0124skhe85263';
preg_match( '/\d+/', $str, $matched );
foreach ( $matched as $mtc ) {
echo $mtc . "\n";
}
実行結果
0124
counter:2,924
String関数 2016年09月30日 12:08   編集
文字列内の部分文字列が最初に現れる場所を見つける
strpos ( 検索対象の文字列 , 検索のキーワード [, オフセット ] )

見つからなかったらfalse、あるいはfalseとして評価される値を返す。
このためstrposの返り値を調べるには===演算子を使ったほうが無難。
strstr関数よりも高速。
$string = 'abcdabcd';
$key = 'bc';
echo strpos($string,$key);
実行結果
1
counter:2,924
String関数 2016年09月30日 12:06   編集
クォートされた文字列のクォート部分を取り除く
$quoted = '\/\/';
echo stripslashes( $quoted );
実行結果
//
counter:2,916
ファイルシステム関数 2016年09月29日 13:03   編集
文字列をファイルに書き込む
file_put_contents(保存先のパス, 書き込む文字列, フラグ);
というような書式。書き込む文字列は、文字列でも配列でもいい。
使用例
file_put_contents('./'file.txt, "文字列", FILE_APPEND | LOCK_EX);
使用できるフラグは以下のようなもので、複数使う場合は | で連結する。
LOCK_EXファイルを排他ロックする
FILE_APPENDファイルに追記する
FILE_USE_INCLUDE_PATHこれはよくわからない
counter:2,941
String関数 2016年09月29日 11:59   編集
文字列を指定回数繰り返す。
print str_repeat('abc',10);
実行結果
abcabcabcabcabcabcabcabcabcabc
counter:2,897