2018年12月13日

【PHP】単体では使わないけど何かと便利な記述。

PHPで記述する細かいもの系。
	mt_srand((int)(((float)microtime()) * 1000000));

mt_randをさらに制度の高い乱数にするための記述。
特定条件下の場合mt_randが常に同じ結果を繰り返すので、そこにアクセス時のマイクロ秒を与えることによって常に違う乱数を発生させるために必要だったりする。
※PHP7.1で修正されているらしい?

	//同じページに何度も読み込ませられるrequire
require(dirname( __FILE__ ).'/index.html');
//同じページに1回だけ読み込ませられるrequire_once
require_once(dirname( __FILE__ ).'/index.html');

よく使っているのはrequire_onceで、設定ファイルを読み込ませるのによく使う。
エラーが出たときに止めないincludeの方が運用ではいいのかもしれないけど、明らかにおかしい状態じゃないとエラーに気づかないので、require使ってる。

	function moji_code($str){
foreach(array('UTF-8','EUC-JP','ASCII','SJIS','JIS') as $charcode){
if(mb_convert_encoding($str, $charcode, $charcode) == $str){
return $charcode;
}
}
return null;
}
if(moji_code($_POST["memo_box"]) != 'SJIS'){
$_POST["memo_box"] = mb_convert_encoding($_POST["memo_box"], "SJIS", "UTF-8,EUC-JP,ASCII,JIS");
}

文字コードを判定するfunctionと、SJISじゃなかったらSJISに変換するif文。
今見たらこれfunctionに第二引数入れて変換も一緒にできるんじゃないかと気づいた。

	function moji_code($str, $code){
foreach(array('UTF-8','EUC-JP','ASCII','SJIS','JIS') as $charcode){
if(mb_convert_encoding($str, $charcode, $charcode) == $str){
$str = mb_convert_encoding($str, $code, $charcode);
return $str;
}
}
return null;
}
$word = "文字コード変換";
$moji = moji_code($word,"SJIS");

これで普通に変換したい文字列と文字コードで変換出来た。
やっぱ数年経って見返すと無駄な部分とか見えてくるなぁ。
でも汎用性で言うなら文字コードだけ返すのも問題なく使えるとは思うけど。
posted by Lc at 23:40 | Comment(0) | PHP | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: