«Prev |
|
1 |
2 |
3 |
4 ||
Next»
ユーザ登録のとき発行するログイン情報で「仮パスワード」を自動で発行する関数
<?php
function pass_make($n){
do{
$date = date("His");
$pass = crypt($date);
$pass = substr($pass, $n*-1, $n);
echo "<br>".$pass;
}while(substr_count($pass, "/") or substr_count($pass, "."));
return $pass;
}
$password = pass_make(7);
echo "<br><br>PW: ".$password;
?>
pass_make(7)の数字は発行するパスワードの桁数です。
Category: PHP | Posted by: lucen |
Linux上でCSVファイル処理のときに改行コード(¥n)で苦労しています。
同じに見えても「"\n"」で見つかる場合と、「'\n'」で見つかる場合がありますね。
いろいろ試したソースを元に説明します。
・まずソースです。
<?php
$str = "テスト\n改行
あり";
echo "<br>".$str;
if(substr_count($str,"\r")) echo "<br>\"\\r\">".substr_count($str,"\r");
if(substr_count($str,'\r')) echo "<br>'\\r'>".substr_count($str,'\r');
if(substr_count($str,"\n")) echo "<br>\"\\n\">".substr_count($str,"\n");
if(substr_count($str,'\n')) echo "<br>'\\n'>".substr_count($str,'\n');
$str = str_replace( "\r",'\r',$str);
$str = str_replace("\n",'\n',$str);
echo "<br>".$str;
if(substr_count($str,"\r")) echo "<br>\"\\r\">".substr_count($str,"\r");
if(substr_count($str,'\r')) echo "<br>'\\r'>".substr_count($str,'\r');
if(substr_count($str,"\n")) echo "<br>\"\\n\">".substr_count($str,"\n");
if(substr_count($str,'\n')) echo "<br>'\\n'>".substr_count($str,'\n');
echo "<br>".$str;
?>
ソースの初めに宣言した「$str」には2つの改行コードが入ってます。
$str = "テスト\n改行
あり";
目に見えるLinuxで使われる「¥n」と、目に見えないWindowsで使われる「¥r¥n」
それを見つけるのに「"」と「'」を使って試してみました。
・実行結果です。
テスト改行あり
"\r">1
"\n">2
テスト¥n改行¥r¥nあり
'\r'>1
'\n'>2
テスト¥n改行¥r¥nあり
最初は「"\n"」で見つかったのに、変換後は「'\n'」で見つかりましたね。
・これは実行結果のソースです。
<br>テスト
改行
あり<br>"\r">1<br>"\n">2<br>テスト¥n改行¥r¥nあり<br>'\r'>1<br>'\n'>2<br>テスト¥n改行¥r¥nあり
これで分かりますか?
実は私もこれを応用してバグの改修をしましたが、結果が分かるのは明日です~笑
Category: PHP | Posted by: lucen |
serializeを使って多次元配列やオブジェクト・クラスなどの構造化データを型や構造を維持しながらファイル、Session、Cookie等に保存可能(シリアル化)に変換できます。
元に戻すには、unserialize関数を使用。
serializeした場合と戻した(unserialize)場合
テストプログラムソース
<?php
// example nested array
$myarray = array("TX",array("t","x"));
// array serializzation
$serialized = serialize($myarray);
echo "# serialize";
lucen_r($serialized);
$unserialized = unserialize($serialized);
echo "# unserialize";
lucen_r($unserialized);
# 画面確認用
function lucen_r($value){
echo "<pre>";
print_r($value);
echo "</pre>";
}
?>
Category: PHP | Posted by: lucen |
PHPでもDBの内容を簡単にXML化できる方法が無いか調べました。
それで見つかったのがPEARの「XML_Serializer」を使う方法です。
PEARの設置が必要ですが、XAMPPなら設置されてるようです。
結果はこのように出力されます。
<?xml version="1.0" encoding="UTF-8"
<result>
<item>
<item_id>1</item_id>
<area_cd>1</area_cd>
<area_name>首都圏</area_name>
<created>2009-01-30 20:16:33</created>
<modified>2009-01-30 20:16:33</modified>
</item>
<item>
<item_id>2</item_id>
<area_cd>2</area_cd>
<area_name>関西</area_name>
<created>2009-01-30 20:16:33</created>
<modified>2009-01-30 20:16:33</modified>
</item>
・ ・ ・
・ ・ ・
・ ・ ・
<item>
<item_id>7</item_id>
<area_cd>7</area_cd>
<area_name>九州・沖縄</area_name>
<created>2009-01-30 20:16:33</created>
<modified>2009-01-30 20:16:33</modified>
</item>
</result>
プログラムソース
内容の続きを見る(Read More)
Category: PHP | Posted by: lucen |
今日までの経過日を計算してみます。
新規商品を計算するとき使ってましたので整理しました。
<?php
# 経過日の計算
$start_date = "2010-04-01";
$today = date("Y-m-d");
echo date_term($start_date, $today);
function date_term($start_date, $today){
# 時間関数に変換
$start_date = strtotime($start_date);
$today = strtotime($today);
# 日付に戻す
$date_term = floor(($today - $start_date) / (60 * 60 * 24));
return $date_term;
}
?>
Category: PHP | Posted by: lucen |
MySQL処理結果を短縮するための作業をやっています。
microtimeで時間を取りたいなと思って作りました。
# start time: 1269657168.11
0123456789101112131415161718192021222324252627282930313233343536373839
0123456789101112131415161718192021222324252627282930313233343536373839
・ ・ ・ ・ ・ ・ ・ ・ ・
・ ・ ・ ・ ・ ・ ・ ・ ・
・ ・ ・ ・ ・ ・ ・ ・ ・
0123456789101112131415161718192021222324252627282930313233343536373839
0123456789101112131415161718192021222324252627282930313233343536373839
0123456789101112131415161718192021222324252627282930313233343536373839
0123456789101112131415161718192021222324252627282930313233343536373839
# end time: 1269657171.58
@ Exe time: 3.47485804558
結果はこのように表示されます。
このプログラムの処理時間は3.475秒です。
・画面表示用のソース
<?php
# 開始時間
$start_time = mtime("start");
# 処理時間をみるために画面表示
echo "<br>";
for($i=0; $i<50000; $i++){
for($j=0; $j<40; $j++){
echo $j;
}
echo "<br>";
}
# 終了時間
$end_time = mtime("end");
# 経過時間の結果(秒)
mtime("Exe time", $start_time, $end_time);
・Microtime計算関数
内容の続きを見る(Read More)
Category: PHP | Posted by: lucen |
サーバのバッチ開発はサーバ上の作業で画面で表示するのではないので確認に時間がかかる。
また多くの表示内容から自分が確認したい部分を速く探すため、簡単にメッセージも入れられるようにしたい。
それで効率的に表示させて実行内容を確認するClassを作りました。
バッチの実行結果
コマンドが実行される日時と順番が表示され、ユーザが入れるメッセージも表示されます。
・ソース
<?php
$a = array("111","222","333","444","555");
$b = array("qqq","www","eee","rrr","ttt");
$w = "hello world";
$x = "X-man";
$debug = new Lucen_debug;
$debug->pr($a);
$debug->ec($w);
$debug->pr($b,"b no display");
$debug->ec($x,"x kekka");
・続きのクラスソース
内容の続きを見る(Read More)
Category: PHP | Posted by: lucen |
今日発見!
2月31日ってあるんですね。
日付を選択して次の日を出すテストをやってみましたが、ちゃんと認識してますね。

2008年は2月29日までなので2月31日の次の日は3月3日

2009年は2月28日までなので2月31日の次の日は3月4日でした。
・PHPソース
$today = date("Y-m-d");
$tomorrow = date("Y-m-d",strtotime($today."+1 day"));
Category: PHP | Posted by: lucen |
文字列に日本語が含まれているか確認する方法です。
日本語の場合「shift_jis」と「utf-8」の文字コード長さが違うことを利用します。
結果画面
・確認ソース
<?php
header("Content-type: text/html; charset=UTF-8");
# 文字に日本語が含まれているか確認
$str = array("聖誕節", "クリスマス", "Christmas");
foreach($str as $value){
if(is_japanese($value)) echo "<br>「".$value."」には日本語が含まれています。";
else echo "<br>「".$value."」には日本語が含まれていません。";
}
・作成したis_japanese関数のソース
内容の続きを見る(Read More)
Category: PHP | Posted by: lucen |
strip_tags()関数でHTMLタグが簡単に削除可能です。
但し<script>タグでは削除されない場合もあります。
strip_tags関数は「<」から「>」までを削除するので<script>の中で<!-- -->で囲まれてないスクリプトがあったらそのまま残ってしまいます。
・strip_tagsで削除できないscript例
<script type="text/javascript">
var pVal = "default";
</script>
strip_tags関数を使う前に「<script>」と「< style>」を先に削除して完全にタグを削除できるようにしました。
・HTMLタグ完全削除用のプログラム
内容の続きを見る(Read More)
Category: PHP | Posted by: lucen |
«Prev |
|
1 |
2 |
3 |
4 ||
Next»