SQLの窓

2017年04月15日


PHP で漢字スペースと通常スペースのトリムとPHP正規表現チェッカー(置き換え)

※ 昔使っていた『PHP正規表現チェッカー』のサイトが閉鎖されたので他のサイトに変更しました

PHP では trim と言う関数で、文字列の先頭および末尾にあるホワイトスペースを取り除く事ができますが、デフォルトでは以下の文字を削除します。
" " (ASCII 32 (0x20)), 通常の空白。
"\t" (ASCII 9 (0x09)), タブ。
"\n" (ASCII 10 (0x0A)), リターン。
"\r" (ASCII 13 (0x0D)), 改行。
"\0" (ASCII 0 (0x00)), NULバイト
"\x0B" (ASCII 11 (0x0B)), 垂直タブ
で、日本語スペースはこのままでは削除してくれないので、追加してみると普通に削除してくれました。 Run Code で実行
<?php

    $kj = "漢字表示";
    $kj_space = " ";
    $a_space = " ";
   

    $str = "{$kj_space}{$a_space}{$kj}{$kj_space}{$a_space}";

    $str = trim($str, "{$a_space}\t\n\r\0\x0B{$kj_space}");
    
    print "|{$str}|";
    
?>
また、同様の結果を preg_replace で得る方法もテストしてみました。この場合重要なのは、パターン修飾子 の "u" でした。(パターンと対象文字列は、 UTF-8 として処理されます)

Run Code で実行
<?php

    $kj = "漢字表示";
    $kj_space = " ";
    $a_space = " ";
   

    $str = "{$kj_space}{$a_space}{$kj}{$kj_space}{$a_space}";

    $str = preg_replace( "/^[ \s]+/u", "", $str );
    $str = preg_replace( "/[ \s]+$/u", "", $str );
    
    print "|{$str}|";
    
?>

また、正規表現のパーターンを一つにして一回で置換する場合は以下のようになります
<?php

    $kj = "漢字表示";
    $kj_space = " ";
    $a_space = " ";
   

    $str = "{$kj_space}{$a_space}{$kj}{$kj_space}{$a_space}";

    $str = preg_replace( "/^[ \s]+|[ \s]+$/u", "", $str );
    
    print "|{$str}|";
    
?>
この場合、重要なのは | を使った構文です

確認は、PHP正規表現チェッカー(置き換え) で解りやすく行う事ができます

▼ パターン文字列は ^[ \s]+|[ \s]+$


PHP正規表現チェッカーで デベロッパーツールを F12 で開いて(コンソール) 以下を実行できます。
$("input[name='pattern").val("^[ \\s]+|[ \\s]+$");$("input[name='replacement']").val("削除");$("#subject").val("  漢字表示  ");$('#preg_replace').keyup();


※ このサイトでは、jQuery が使用されています


posted by lightbox at 2017-04-15 14:15 | Comment(0) | PHP + ベーシック | このブログの読者になる | 更新情報をチェックする

2016年05月05日


PHP で HTML数値エンティティを、目的のキャラクタセットの文字列に変換する

テキストエディタが優秀な場合は、直接ソースに書いてもいいのですが、古いエディタだと UTF-8 の文字列を直接書けない場合もあります。もちろん、数値データから文字列化する処理に有効ですが、マニュアルには肝心の『変換するコード領域を指定する配列』の説明がありません

以下は簡単なサンプルですが、0x2A6D5 のほうは変換されず、0x2A6D6 のほうは変換されます
	$convmap = array(0x0, 0x2A6D5, 0, 0xFFFFF);
	$wk = mb_decode_numericentity("&#173782;", $convmap, 'UTF-8');	
	print $wk;

	$convmap = array(0x0, 0x2A6D6, 0, 0xFFFFF);
	$wk = mb_decode_numericentity("&#173782;", $convmap, 'UTF-8');	
	print $wk;

0x0 から 0x2A6D6 の範囲のみ変換します。0 はオフセットなので通常は 0 として使いません( 0x2A6D5 では、1 にすれば変換対象になります )。最後の 0xFFFFF はマスクなので、そのまま利用するという意味で全てのフラグが on である 0xFFFFF を使用しています

0x2A6D6 の漢字に関しては、こちらより確認して下さい



𪛖


タグ:PHP
posted by lightbox at 2016-05-05 19:38 | Comment(0) | PHP + ベーシック | このブログの読者になる | 更新情報をチェックする

2015年11月02日


PHP : $_GET、$_POST、$_SESSION とグローバル変数全ての簡単な表示方法

$GLOBALS はスーパーグローバル変数を含む、ほぼ全てのグローバル変数を保持しています。そこで、print_r で取得できる内容から、正規表現で $_COOKIE と $_FILES を削除したものを表示しています。

※ 同時に get_include_path で、現在の include_path をパス単位で表示しています
<?php

$debug_string = print_r($GLOBALS,true);

$debug_string = preg_replace('/\n\s+\[_[C|F].+?\)/s', '', $debug_string);

print "<br><br><hr>";
print "<pre style='font-weight:bold;white-space:pre-wrap;'>";
print $debug_string;
print "--------------------------------------\n";
print_r( explode(PATH_SEPARATOR,get_include_path()) );
print "</pre>";

?>


print_r は、このように出力結果を文字列として戻す事ができるので、デバッグ時にファイルに出力するのに有効です

▼ 表示結果の例( windows )
Array
(
    [_GET] => Array
        (
            [update_type] => 1
            [syain] => 0053
            [order] => 氏名
        )

    [_POST] => Array
        (
        )

    [rpath] => C:\httpd142p\if_skeleton\lightbox99\
    [_SESSION] => Array
        (
            [charset] => utf-8
            [iframe_id] => target
        )

    [server] => localhost
    [db_name] => lightbox
    [user] => root
    [password] => パスワード
    [connect] => mysqli Object
        (
            [affected_rows] => 5
            [client_info] => mysqlnd 5.0.10 - 20111026 - $Id: e707c415db32080b3752b232487a435ee0372157 $
            [client_version] => 50010
            [connect_errno] => 0
            [connect_error] => 
            [errno] => 0
            [error] => 
            [error_list] => Array
                (
                )

            [field_count] => 12
            [host_info] => localhost via TCP/IP
            [info] => 
            [insert_id] => 0
            [server_info] => 5.6.17
            [server_version] => 50617
            [stat] => Uptime: 15857  Threads: 1  Questions: 288  Slow queries: 0  Opens: 71  Flush tables: 1  Open tables: 64  Queries per second avg: 0.018
            [sqlstate] => 00000
            [protocol_version] => 10
            [thread_id] => 76
            [warning_count] => 0
        )

    [query] => select * from `社員マスタ`
where 管理者 is NULL order by 氏名

    [result] => Array
        (
            [0] => 社員マスタ
            [1] => mysqli_result Object
                (
                    [current_field] => 0
                    [field_count] => 13
                    [lengths] => 
                    [num_rows] => 0
                    [type] => 0
                )

            [2] => コード名称マスタ
            [3] => mysqli_result Object
                (
                    [current_field] => 0
                    [field_count] => 7
                    [lengths] => 
                    [num_rows] => 3
                    [type] => 0
                )

            [4] => 社員マスタ
            [5] => mysqli_result Object
                (
                    [current_field] => 0
                    [field_count] => 12
                    [lengths] => 
                    [num_rows] => 5
                    [type] => 0
                )

        )

    [ErrorMessage] => 
    [php_errormsg] => Undefined variable: ErrorDisable
    [row] => 
    [sentaku] => 
    [GLOBALS] => Array
 *RECURSION*
)
--------------------------------------
Array
(
    [0] => .
    [1] => C:\php\pear
    [2] => C:\httpd142p\if_skeleton\lightbox99\common
    [3] => C:\httpd142p\if_skeleton\lightbox99\db
    [4] => C:\httpd142p\if_skeleton\lightbox99\view
)
データベースのテーブル別に配列を使って処理すると、後から確認しやすくなります
posted by lightbox at 2015-11-02 14:30 | Comment(0) | PHP + ベーシック | このブログの読者になる | 更新情報をチェックする

Windows・Unix(Linux)共用、PHPの include_path の動的設定方法

まず、WEB用のパスでは、ファイルをサーチする事はできません。その OS が判断できる絶対パスを作成する必要があります。Unix(Linux) の場合は、WEBのフォルダの前に、実際の / からのパスを付加します。Windows の場合は、同様の処理を行いますが、/ を \ に変換する簡単な方法として realpath を使用しています。

※ Windows の realpath は、その場所が C ドライブだとすると、 / は C:\ に変換してくれます

PATH_SEPARATOR は、ファイルサーチ用の区切り文字で、Unix(Linux) では :(コロン)、Windows では ;(セミコロン)になります。

DIRECTORY_SEPARATOR は、それぞれ / と \ となります。

realpath では、実際にそのファイルが存在しないと何も返さないので注意して下さい。

get_include_path() で元々のパスを含める事を忘れないで下さい。(恐らく)デフォルトの環境で、. が含まれているはずで、それによってカレントディレクトリの検索が可能になっています。
<?php
$rpath = "/if_skeleton/lightbox99";
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
	$rpath = realpath( "/httpd142p{$rpath}" );
}
else {
	$rpath = "/home/lightbox/www/testweb{$rpath}";
}
$rpath .= DIRECTORY_SEPARATOR;
set_include_path(get_include_path() . PATH_SEPARATOR . "{$rpath}common" . PATH_SEPARATOR . "{$rpath}db" . PATH_SEPARATOR . "{$rpath}view");


関連する PHP ドキュメント

コア php.ini ディレクティブに関する説明 


posted by lightbox at 2015-11-02 14:12 | Comment(0) | PHP + ベーシック | このブログの読者になる | 更新情報をチェックする

2015年05月28日


PHP : PHPコマンドラインから使用中の ini ファイルをチェック

php.exe --ini
( ※ PHP 5.2.3 以降で使用可能です )
他にも良く使いそうなのもののサンプルを以下に記述します
// バージョン表示
php -v
// 現在の日付
php -r "print date('Ymd');"
// タイムゾーンの確認
php --ri date

コマンドラインからの実行は、以下のようにエクスプローラで PHP フォルダを選択して、SHIFT しながら右クリックしてコマンドウインドウを開いて使用します。



PHP マニュアルへのリンク

PHP をコマンドラインから使用する
コマンドラインオプション
入出力ストリーム 


関連する記事


タグ:PHP
posted by lightbox at 2015-05-28 10:22 | PHP + ベーシック | このブログの読者になる | 更新情報をチェックする

2014年06月07日


GET メソッドでフォーム送信時にキャッシュを読まないように( 特に Google Chrome )


header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );

WEB アプリケーションを作成する以上、http ヘッダにキャッシュコントロールは必ずセットしますが、それでも何故かキャッシュから読まれる場合があります。

他のトラブルを事前に解消する為にも、一時的には全てのキャッシュを削除するのは良い方法ではありますが解決にはなりません。

Google Chrome では、デベロッパーツールに、『Disable cache (while DevTools is open)』という機能もありますが、先日そうしていても submit ボタンがサーバーへアクセスしない事象に遭遇しました。

で、結局ベーシックな方法ではありますが、以下のように URL を常に変更してキャッシュから読まないようにするのが確実である事が解りました。

Google Chrome で発生した手順(localhostにて)

1) 問い合わせ画面から、window.open で新しいウインドウを開く。
2) そのウインドウでデータを削除し、ウインドウを閉じる
3) 元の問い合わせ画面が表示される( 隠れていたのが見えるようになっただけ )
4) submit ボタンを押しても反応が無い( Network で見ても反応なし )
5) なのに、右クリックからソースを見ると変わっている( 何故?? )

Google Chrome では、以前よりレンタルサーバを使ってサーバーを変更しても変化しないというような事がありました。とにかく、効率の良い表示のアルゴリズムで作成されているのでしょうが、バグもあるのだろう・・・というのが正直な感想です。
<input
	type="hidden"
	name="cache"
	value="<?= uniqid() ?>">



posted by lightbox at 2014-06-07 18:34 | PHP + ベーシック | このブログの読者になる | 更新情報をチェックする

2013年09月08日


初心者用ファイルアップロード用テンプレート( 含 HTML5 の multiple="true" )



PHP を使用してファイルをアップロードする標準的な方法に加えて、HTML5 の input 要素で multiple="true"(要するに、ファイル選択ダイアログでファイルを複数選択が可能になります) を指定したサンプルです

Google Chrome



Firefox



IE10


<?
header( "Content-Type: text/html; Charset=utf-8" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );

foreach( $_POST as $Key => $Value ) {
	$_POST[$Key] = str_replace("\\\\", "\\", $Value );
	$_POST[$Key] = str_replace("\\'", "'", $_POST[$Key] );
	$_POST[$Key] = str_replace("\\\"", "\"", $_POST[$Key] );
}

require_once("html_head.php");

print "<pre>";
print_r( $_FILES );
print "</pre>";

$target = $_FILES['file_1']['name'];

$upload = "./upload_file/";
$upload .= $target;
print $upload . "<br>";

if ( move_uploaded_file( $_FILES['file_1']['tmp_name'], $upload ) ) {
	print "アップロードに成功しました\n";
}
else {
	print "アップロードに失敗しました\n";
}

?>

更新履歴
2011-05-22 : 初回投稿
2013-09-08 : IE10 でテスト( 表示等を少し変更 )



タグ:HTML5
posted by lightbox at 2013-09-08 22:03 | PHP + ベーシック | このブログの読者になる | 更新情報をチェックする

2013年05月05日


PHP : 改行とタブと余り(%) でカレンダーを作成( 最終日は mktime で取得 )

PHP 5.4.13 を使用





入力した月によって、カレンダーを作成するという単純なものですが、初心者向けに、文字列はシングルクォートとドットで組み立てて、タブや改行のみダブルクォートを使用しています。

完全に画面と処理を分離していませんが、PHP に不慣れである事を想定して、HTML上部 > PHP の print > HTML の下部( + デバッグ出力 ) といった構成です。

月の最終日に関しては、マニュアルのサンプルコード部分に記述があります。

実際は、配列をカレンダーに埋め込んで、その配列にセットする条件を作るほうが簡単ですが、それだと動きが無いので初心者向けではありません。このほうが、PHP の特色をいろいろ感じながらできると思います。

最初から完成コードを見せずに、『どこで改行を入れるべきか』を考えてから作って行くのが良いと思います。( 画像内の表はヒントです )
<?php

	// HTML 側の meta 要素に依存せずにキャラクタセットを決定しています
	header( "Content-Type: text/html; Charset=utf-8" );

	// 未入力は1月とする
	if ( trim( $_GET['mon'] ) == '' ) {
		$_GET['mon'] = 1;
	}

	// HTML(画面) の主要部分を読み込んでいます
	require_once("html_head.php");

	print '<h1>' . $_GET['mon'] . '月の最終日は ' . last_date( $_GET['mon'] ) . ' 日です</h1>' . "\n";

	// HTML 上で改行コードやタブを利用する為に PRE 要素を使用しています
	print "<pre>";

	$week =  date('w', mktime(0, 0, 0, $_GET['mon'], 1, 2013));
	print '曜日は (' . $week . ') です' . "\n";
	print 'date 関数が返すのは文字列なので、$week には文字列が入ります' . "\n";

	print '<hr>';

	// $week の内容ぶんタブを出力する
	for( $i = 0; $i < ($week+0); $i++ ) {
		print "\t";
	}

	for( $i = 0; $i < 31; $i++ ) {
		print "\t" . ($i+1);
		if ( $week + ($i % 7) == 6 ) {
			print "\n";
		}

		if ( ($i+1) == last_date( $_GET['mon'] ) ) {
			break;
		}

	}

	print "\n\n";

	print "</pre>";

	// HTML(画面) の最終部分と、php のデバッグ(予備)部分を読み込んでいます
	require_once("html_footer.php");

// 2013年の指定月の最終日を求める
function last_date( $mon ) {

	$lastday = mktime(0, 0, 0, $mon+1, 0, 2013);
	$dd = date( 'j', $lastday );
	return ($dd+0);

}

?>




posted by lightbox at 2013-05-05 22:39 | PHP + ベーシック | このブログの読者になる | 更新情報をチェックする

2010年10月30日


PHP : 前ゼロ文字列作成と右から必要な長さ文字列を取得する処理

要するに、VBScript や古い VB における Right 関数の代替えが目的です。

ただ、前ゼロしたいだけなら sprintf がありますし、他の言語でも行うに
は、文字列の長さと開始位置から指定長さを取得する処理があればできます。
<?

// **********************************************************
// n 桁の前ゼロ文字列を作成するには
// 以下で簡単に作成できますが、
// **********************************************************
$a = sprintf("%05d", 1);
print "$a<br>";

// **********************************************************
// どんな言語でもたぶんある関数(メソッド)を使って行うには
// **********************************************************

// 1) n 桁の 0 を目的の文字列の前に連結する

$a = "00000" . 1;

// 2) 全体の長さを取得する

$len = strlen($a);

// 3) 全体の長さ - 欲しい長さを開始位置とする

$start = $len - 5;

// 4) その位置から欲しい長さぶん切り取る

$x = substr( $a, $start, 5 );

print "$x<br>";

// つまり
function m_zero( $target, $n ) {

	$target = str_repeat("0",$n) . $target;
	$len = strlen($target);
	$start = $len - $n;
	$target = substr( $target, $start, $n );
	return $target;

};

print m_zero(1,5) . "<br>";
print m_zero("AA",5) . "<br>";
print m_zero("あA",5) . "<br>";
print m_zero(1234,5) . "<br>";
print m_zero(12345,5) . "<br>";

?>

00001
00001
00001
000AA
00あA
01234
12345
関連する記事 PHP 5.3.0 以降の無名関数
タグ:PHP 文字列
posted by lightbox at 2010-10-30 19:34 | PHP + ベーシック | このブログの読者になる | 更新情報をチェックする

2010年10月03日


PHP : mb_internal_encoding で SHIFT_JIS(SJIS) は厳密には不可だと思います

昔からそう思ってたのですが、WEB で見てると皆お使いになっているようです。
たしかどこかに書いてあったはずと、php.ini を見てみると。

; internal/script encoding.
; Some encoding cannot work as internal encoding.
; (e.g. SJIS, BIG5, ISO-2022-*)
; http://php.net/mbstring.internal-encoding
;mbstring.internal_encoding = EUC-JP
です。 理由は解りませんが、やはり 5c とかまずいのでは無いでしょうか。 あるいは、他のキャラクタセットへの変換で不完全な変換が比較的 多く発生する可能性があるとか、かもしれません。
タグ:PHP トラブル
posted by lightbox at 2010-10-03 20:02 | PHP + ベーシック | このブログの読者になる | 更新情報をチェックする

2010年03月20日


PHP : Seesaa の携帯のページを参考にした、最小限の画像を一つ表示するコード

携帯用の WEB アプリケーションは真剣にやった事が無いので、User Agent
の判断も単純で、3つだけです。( DoCoMo、SoftBank、KDDI )

詳しい状態や機種の判別はせずに、HTML の構成を 携帯の為に単純化する
為にそれ以外を排除しているだけです。

ad.php は、先頭に広告を入れて Google Adsense のテストをしています。

それと、これを作って初めて気がついたのですが、img 要素の src 属性で
拡張子を省略すると各ブラウザで .jpg 扱いしてくれるのですね。知らな
かったです。
( Firefox での優先順位は .png のほうが高いようです : 3/12 確認 )


関連する記事

iモードHTMLシミュレータII

Mobile_test

<?
header( "Content-Type: text/html; Charset=shift_jis" ); 
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" ); 

$sub_domain = 'teblo';
$root_url = "http://$sub_domain.seesaa.net/pages/user/m/index";

if ( $_SERVER["HTTP_REFERER"] == '' ) {
	$_SERVER["HTTP_REFERER"] = $root_url;
}

$mobile_flg = true;
$target = $_SERVER["HTTP_USER_AGENT"] . "DoCoMoSoftBankKDDI";

while(true) {

	$mobile_chk = strpos( $target, "DoCoMo" );
	if ( $mobile_chk == 0 ) {
		break;
	}
	$mobile_chk = strpos( $target, "SoftBank" );
	if ( $mobile_chk == 0 ) {
		break;
	}
	$mobile_chk = strpos( $target, "KDDI" );
	if ( $mobile_chk == 0 ) {
		break;
	}

	$mobile_flg = false;
	break;
}

if ( !$mobile_flg ) {
	header( "Location: $root_url" );
	exit();
}

?>
<html>
<body>
<?php

require_once("ad.php");

?>
<hr>
<img src="<?= $_GET['id'] ?>">
<hr>
(*)<a href="<?= $_SERVER["HTTP_REFERER"] ?>" accesskey="*">戻る</a><br>
(0)<a href="<?= $root_url ?>" accesskey="0">このブログのトップ</a><br>
</body>
</html>



posted by lightbox at 2010-03-20 13:13 | PHP + ベーシック | このブログの読者になる | 更新情報をチェックする

2009年07月18日


PHP : ユニークなキーの取得

uniqid という単純な関数で取得できます。

結果例 : 4a60afd294c67

これは、マイクロ秒( 100万分の1秒 ) を元にしているらしいので、十分にユニークです。ほぼこれ以上を気にする必要はありません。

マニュアルには、第一引数の説明として、prefix というものがありますが、これは複数のサーバで同時に実行される場合同じになる可能性が( ほんのほんの少しだけ、殆ど無い ) あるので用意されているだけで、同一サーバの同一処理系で利用しても意味ありません。

また、第二引数としてさらにユニークにするオプションがありますが

実行例 : print uniqid("",true);
結果例 : 4a60b0dd16e413.58317420

通常そこまでする必要はありません。
( どうしても気になるのであれば使用すればいいと思います )

さらに、$token = md5(uniqid()); というサンプルがありますが、これはセッション等のセキュリティ上の問題を回避する為の手法であり、ユニークキーを作成する事だけが目的の場合は必要ありません。


uniqid(); で十分です。


サーバ側で使うのであれば、そのid の存在チェックを行ってから使うほうが現実的ですね。
( DB ならば、RDBMS 内にそういうユニークキー作成機能があるのでそちらを使用します )




posted by lightbox at 2009-07-18 02:10 | PHP + ベーシック | このブログの読者になる | 更新情報をチェックする

2009年05月05日


PHP : date 関数

文字列の現在の日付を取得する

例 : $srcid = "code" . date("ymdHis");
123
Y年。4 桁の数字。例: 1999または2003
y年。2 桁の数字。例: 99 または 03
m月。数字。先頭にゼロをつける。01 から 12
d日。二桁の数字(先頭にゼロがつく場合も)01 から 31
H時。数字。24 時間単位。00 から 23
i分。先頭にゼロをつける。00 から 59
s秒。先頭にゼロをつける。00 から 59


タグ:PHP 日付処理
posted by lightbox at 2009-05-05 13:18 | PHP + ベーシック | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します


Windows
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
CSS ドロップシャドウの参考デモ
Google Hosted Libraries
cdnjs
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり