«Prev | | 1 | 2 | 3 | 4 || Next»

09/06: [PHP] 仮パスワードを自動発行

ユーザ登録のとき発行するログイン情報で「仮パスワード」を自動で発行する関数


<?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 |

05/06: [PHP] ¥n 改行コードのいろいろ

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 |

04/22: [PHP] serialize()関数、unserialize()関数

serializeを使って多次元配列やオブジェクト・クラスなどの構造化データを型や構造を維持しながらファイル、Session、Cookie等に保存可能(シリアル化)に変換できます。

元に戻すには、unserialize関数を使用。

serializeした場合と戻した(unserialize)場合
PHP serialize関数の使用例

テストプログラムソース

<?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 |

04/20: [PHP] DB(MySQL)や配列の内容をXMLで簡単出力

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 |

04/13: [PHP] 日付の差を計算

今日までの経過日を計算してみます。

新規商品を計算するとき使ってましたので整理しました。


<?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 |

03/27: [PHP] microtimeを利用したプログラム実行時間

MySQL処理結果を短縮するための作業をやっています。
microtimeで時間を取りたいなと思って作りました。


# start time: 1269657168.11
0123456789101112131415161718192021222324252627282930313233343536373839
0123456789101112131415161718192021222324252627282930313233343536373839
 ・ ・ ・       ・ ・ ・       ・ ・ ・
 ・ ・ ・       ・ ・ ・       ・ ・ ・
 ・ ・ ・       ・ ・ ・       ・ ・ ・
0123456789101112131415161718192021222324252627282930313233343536373839
0123456789101112131415161718192021222324252627282930313233343536373839
0123456789101112131415161718192021222324252627282930313233343536373839
0123456789101112131415161718192021222324252627282930313233343536373839

# end time: 1269657171.58
Exe time3.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 |

02/09: [PHP] バッチ(Batch)用のClass

サーバのバッチ開発はサーバ上の作業で画面で表示するのではないので確認に時間がかかる。

また多くの表示内容から自分が確認したい部分を速く探すため、簡単にメッセージも入れられるようにしたい。

それで効率的に表示させて実行内容を確認する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 |

02/01: [PHP date] 2月31日って認識してるんだ!

今日発見!
2月31日ってあるんですね。

日付を選択して次の日を出すテストをやってみましたが、ちゃんと認識してますね。
PHP date
2008年は2月29日までなので2月31日の次の日は3月3日

PHP date
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 |

12/21: [PHP] 文字列が日本語か確認する

文字列に日本語が含まれているか確認する方法です。

日本語の場合「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 |

12/11: [PHP] html タグを完全削除

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»