memo.xight.org

日々のメモ

カテゴリ : PHP

3ページ目 / 全10ページ

PHPのフレームワーク Ethna 徹底解説

Summary

Gree Labによる PHPフレームワーク Ethnaの解説ページ.

由来はやっぱり某RPG

http://labs.gree.jp/Top/Document/20060707.html#content_1_5

Reference

GREE Labs - PHPのフレームワーク『Ethna』徹底解説
http://labs.gree.jp/Top/Document/20060707.html

via

phpspot開発日誌 - PHPのフレームワーク『Ethna』徹底解説サイト
http://phpspot.org/blog/archives/2006/08/phpethna.html

EUC-JP で変換できない機種依存文字を置換する

Summary

UTF-8で変換できない機種依存文字を置換する[2006-06-19-13] のEUC-JP版 のつもり.

追記 [2006-08-09]

結果は失敗.
文字化け発生.

Source

function replaceText($str){
	$arr = array(
		// ADA0 - ADB4
		"\xAD\xA1" => "(1)",
		"\xAD\xA2" => "(2)",
		"\xAD\xA3" => "(3)",
		"\xAD\xA4" => "(4)",
		"\xAD\xA5" => "(5)",
		"\xAD\xA6" => "(6)",
		"\xAD\xA7" => "(7)",
		"\xAD\xA8" => "(8)",
		"\xAD\xA9" => "(9)",
		"\xAD\xAA" => "(10)",
		"\xAD\xAB" => "(11)",
		"\xAD\xAC" => "(12)",
		"\xAD\xAD" => "(13)",
		"\xAD\xAE" => "(14)",
		"\xAD\xAF" => "(15)",
		"\xAD\xB0" => "(16)",
		"\xAD\xB1" => "(17)",
		"\xAD\xB2" => "(18)",
		"\xAD\xB3" => "(19)",
		"\xAD\xB4" => "(20)",
		
		// ADB5 - ADBF
		"\xAD\xB5" => "I",
		"\xAD\xB6" => "II",
		"\xAD\xB7" => "III",
		"\xAD\xB8" => "IV",
		"\xAD\xB9" => "V",
		"\xAD\xBA" => "VI",
		"\xAD\xBB" => "VII",
		"\xAD\xBC" => "VIII",
		"\xAD\xBD" => "IX",
		"\xAD\xBE" => "X",
		"\xAD\xBF" => "?",
		
		"\xAD\xC0" => "ミリ",
		"\xAD\xC1" => "キロ",
		"\xAD\xC2" => "センチ",
		"\xAD\xC3" => "メートル",
		"\xAD\xC4" => "グラム",
		"\xAD\xC5" => "トン",
		"\xAD\xC6" => "アール",
		"\xAD\xC7" => "ヘクタール",
		"\xAD\xC8" => "リットル",
		"\xAD\xC9" => "ワット",
		"\xAD\xCA" => "カロリー",
		"\xAD\xCB" => "ドル",
		"\xAD\xCC" => "セント",
		"\xAD\xCD" => "パーセント",
		"\xAD\xCE" => "ミリバール",
		"\xAD\xCF" => "ページ",
		
		"\xAD\xD0" => "mm",
		"\xAD\xD1" => "cm",
		"\xAD\xD2" => "km",
		"\xAD\xD3" => "mg",
		"\xAD\xD4" => "kg",
		"\xAD\xD5" => "cc",
		"\xAD\xD6" => "m2",
		
		"\xAD\xDF" => "平成",
		
		"\xAD\xE0" => "``",
		"\xAD\xE1" => "''",
		"\xAD\xE2" => "No.",
		"\xAD\xE3" => "K.K.",
		"\xAD\xE4" => "",
		
		"\xAD\xE5" => "(上)",
		"\xAD\xE6" => "(中)",
		"\xAD\xE7" => "(下)",
		"\xAD\xE8" => "(左)",
		"\xAD\xE9" => "(右)",
		
		"\xAD\xEA" => "(株)",
		"\xAD\xEB" => "(有)",
		"\xAD\xEC" => "(代)",
		
		"\xAD\xED" => "明治",
		"\xAD\xEE" => "大正",
		"\xAD\xEF" => "昭和",
		
		"\xAD\xF0" => "",
		"\xAD\xF1" => "",
		"\xAD\xF2" => "",
		"\xAD\xF3" => "",
		"\xAD\xF4" => "",
		"\xAD\xF5" => "",
		"\xAD\xF6" => "",
		"\xAD\xF7" => "",
		"\xAD\xF8" => "",
		"\xAD\xF9" => "",
		"\xAD\xFA" => "",
		"\xAD\xFB" => "",
		"\xAD\xFC" => "",
		
		"\xFC\xF1" => "i",
		"\xFC\xF2" => "ii",
		"\xFC\xF3" => "iii",
		"\xFC\xF4" => "iv",
		"\xFC\xF5" => "v",
		"\xFC\xF6" => "vi",
		"\xFC\xF7" => "vii",
		"\xFC\xF8" => "viii",
		"\xFC\xF9" => "ix",
		"\xFC\xFA" => "x",
	);
	return strtr($str,$arr);
}


Reference

文字コード表
http://ash.jp/code/codetbl2.htm

HTMLエンティティから元の文字に戻す

Summary

文字列中のHTML特殊文字を元に戻す.
htmlspecialchars()の逆の操作.
function unhtmlspecialchars( $str )
{
	$entry = array_flip( get_html_translation_table( HTML_SPECIALCHARS ) );
	return strtr( $str, $entry );
}


function unhtmlentities($string)
{
	// 数値エンティティの置換
	$string = preg_replace('~&#x([0-9a-f]+);~ei', 'chr(hexdec("\\1"))', $string);
	$string = preg_replace('~&#([0-9]+);~e', 'chr(\\1)', $string);

	// 文字エンティティの置換
	$trans_tbl = get_html_translation_table(HTML_ENTITIES);
	$trans_tbl = array_flip($trans_tbl);
	return strtr($string, $trans_tbl);
}

Reference

マイクロチップス - PHP Tips
http://www.sound-uz.jp/php/tips/micro.html#c01

PHP とデータベースに関する5つの問題と解決方法

Summary

1. 直接DBにアクセスするな.
   PEARのDBモジュール,又はPDOのクラスを利用しろ.
2. オートインクリメントを使え.
3. データベースを多重化するな.
4. リレーションを使え.
5. クエリを減らせ.

Reference

IBM - Five common PHP database problems
http://www-128.ibm.com/developerworks/opensource/library/os-php-dbmistake/

IBM - PHP データベースに共通の 5 つの問題
http://www-06.ibm.com/jp/developerworks/opensource/060915/j_os-php-dbmistake.shtml

via

GIGAZINE - 2006-08-04 - PHPとデータベースに関する5つの問題、とその解決法
http://gigazine.net/index.php?/news/comments/20060804_php_database_problems/

checkdate - 日付の妥当性をチェックする関数

Summary

for($year = 2004; $year < 2014; $year++){
	$isLeapYear = checkdate(2, 29, $year) ? "leap year" : "not leap year";
	echo "{$year} is {$isLeapYear}.\n";
}


Reference

ほでなすPHP - 関数ミニリファレンス -> 日付・時刻関数
http://www.shigeweb.jp/php/project_p/?section=miniref&page=date#checkdate

checkdate
http://php.s3.to/man/function.checkdate.html

ctype と is_* , str_* の処理速度比較

Summary

ctype関数はCライブラリを使用しているため,is_*, str_*より高速とのこと.
だが実際に比較してみると,is_* の方が速い.

ctype_digit 版

$t = microtime_float();
for($i=1;$i<=1000000;$i++){
	if(ctype_digit(1234567890)) {
		print "";
	}
}
print microtime_float()-$t."\n";

function microtime_float() {
	list($usec, $sec) = explode(" ", microtime());
	return ((float)$usec + (float)$sec);
} 


is_int 版

$t=microtime_float();
for($i=1;$i<=1000000;$i++){
	if(is_int(1234567890)) {
		print "";
	}
}
print microtime_float()-$t."\n";

function microtime_float() {
	list($usec, $sec) = explode(" ", microtime());
	return ((float)$usec + (float)$sec);
} 


Reference

1人で稼ぐ日記 - 2006-05-02 - [PHP]ctypeとis_num
http://kokoromo.jugem.cc/?eid=210

microtime
http://php.s3.to/man/function.microtime.html

PHP Design Patterns

Reference

PHP Design Patterns | dikini.net
http://dikini.net/php_design_patterns

koshigoewiki - php - デザインパターン
http://www.koshigoe.sakura.ne.jp/dokuwiki/doku.php?id=koshigoewiki:php:%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3

via

phpspot開発日誌 - PHP5によるデザインパターンサンプルプログラム集
http://phpspot.org/blog/archives/2006/07/php5_3.html

phpspot開発日誌 - PHP5でデザインパターン
http://phpspot.org/blog/archives/2005/12/php5_1.html

PHP から Instant Messenger を操作するライブラリ

flumpCakes

PHP から MSN Messenger を操作するライブラリ

<?php
include('msnp9.class.php');
include('msn_sb.class.php');

$msn = new msn;

if ($msn->connect('EMAIL@hotmail.com', 'PASSWORD'))
{
	$msn->rx_data();
}
?>


Grab Yahoo

PHP から Yahoo! Messenger を操作するライブラリ

Reference

PHP MSN Messenger Class : flumpCakes
http://flumpcakes.co.uk/php/msn-messenger

PHP Classes - Class: Grab Yahoo
http://www.phpclasses.org/browse/package/3127.html

via

phpspot開発日誌 - 2006-07-25 - PHPからMSN Messengerを操作するクラスライブラリ : flumpCakes
http://phpspot.org/blog/archives/2006/07/phpmsn_messenge.html

Enhanced Simple PHP Gallery

Summary

header.php, footer.php が必要.

設定は http://example.com/path/to/gallery/config/ から可能.

validate.php の 13行目,14行目にユーザ名,パスワードがある.

以下のJSが必要.
http://memory.palace.org/js/toggle.js

以下を参考にCSS作成.
http://memory.palace.org/master/sp_styles.css

デフォルトのアカウント

username demo
password demo

Demo

http://memory.palace.org/demo/

Reference

Point B Studio | Open Source Initiatives | eSPG v2.0
http://memory.org/point.b/open.source/

Web Form Factory - フォームジェネレータ

Summary

formを記述したHTMLファイルをアップロードして,
自動でサーバサイドのスクリプトも生成してくれるサービス.

PHP4, PHP5, PHP5.1 の形式で出力が可能.

Reference

Web Form Factory (v0.1.2 beta) - Open Source Web Form Generator
http://www.webformfactory.com/

via

HTMLから登録フォームを自動生成するWeb Form Factory:phpspot開発日誌
http://phpspot.org/blog/archives/2006/07/htmlweb_form_fa.html

PDO - PHP Data Objects

Summary

PHP 5.1 からバンドルされている PDO.
PHPで使用できるすべてのデータベースシステムで共通のAPIを提供できるように設計されている.

Install

# aptitude install php5.1-pdo php5.1-pdo-mysql php5.1-pdo-sqlite
# apache2ctl restart

DSN

DBMS DSN
MySQL mysql:host=localhost; dbname=pdotest
PostgreSQL pgsql:host=localhost; dbname=pdotest
Firebird firebird:dbname=localhost:pdotest.fdb
Oracle oci:dbname=/localhost/pdotest
Sybase dblib:host=localhost; dbname=pdotest
SQLite2 sqlite2:/path/to/pdotest.sq2
SQLite2 (memory) sqlite2::memory:
SQLite3 sqlite:/path/to/pdotest.sq3
SQLite3 (memory) sqlite::memory

PDO を利用している O/R マッピングライブラリ

EZPDO
http://www.ezpdo.net/blog/cats/ezpdo

Zend Framework
http://framework.zend.com/

S2Dao.PHP5
http://s2dao.php5.sandbox.seasar.org/

CBL ActiveRecord
http://31tools.com/cbl_activerecord/

Doctrine
http://www.phpdoctrine.com/

Reference

PHP: PDO 関数 - Manual
http://jp.php.net/pdo

PECL :: Package :: PDO
http://pecl.php.net/package/PDO

CodeZine - PDOでサクサクDB開発
http://codezine.jp/a/article.aspx?aid=433
CodeZine - 著者情報 - ハタ (blog.xole.net)
http://codezine.jp/a/authorlist.aspx?auid=157

Do You PHP? - PDO (PHP Data Objects) を試してみる - PDO_OCIは今どんな感じ?
http://www.doyouphp.jp/php5/php5_pdo.shtml

Debian Sarge で PHP5.1

/etc/apt/sources.list

# PHP5
#deb http://people.debian.org/~dexter php5 sarge
deb http://people.debian.org/~dexter php5.1 sarge

Install

# aptitude install php5.1 php5.1-gd php5.1-mbstring

$ COLUMNS=112 dpkg -l |grep php5.1
ii  libapache2-mod-php5.1  5.1.4-0.1~sarge1       HTML-embedded scripting language (apache 2.0 module)
ii  php5.1                 5.1.4-0.1~sarge1       server-side, HTML-embedded scripting language (meta-package)
ii  php5.1-cgi             5.1.4-0.1~sarge1       HTML-embedded scripting language (CGI binary)
ii  php5.1-cli             5.1.4-0.1~sarge1       command-line interpreter for the PHP 5.1 scripting language
ii  php5.1-common          5.1.4-0.1~sarge1       common files for packages built from the php5.1 source
ii  php5.1-gd              5.1.4-0.1~sarge1       GD module for PHP 5.1
ii  php5.1-mbstring        5.1.4-0.1~sarge1       mbstring module for PHP 5.1
ii  php5.1-mysql           5.1.4-0.1~sarge1       MySQL module for PHP 5.1
ii  php5.1-session         5.1.4-0.1~sarge1       session module for PHP 5.1
ii  php5.1-sqlite          5.1.4-0.1~sarge1       SQLite module for PHP 5.1