#contents *言語の特徴 [#fc1818c9] PHPのナイスな点としては -似た用途で使用される言語、「Perl」と比べた場合の処理の早さ //PHPがPerlより早いのではなくCGIが遅いだけ -MySQL等に代表されるデータベースとの親和性の高さ 等が上げられるような気がします。~ [[まずは、PHPの実行環境を整えましょう。>./PHPを始めるには]] ([[ゆとり専用>./PHPを始めるには(ゆとり専用)]]) *Javaとオブジェクト指向を用いたPHPの比較 [#s0a3d0e9] (PHP) #geshi(php,number){{ class Hello { public static function main($args = array()) { printf("( ^ω^) "); } } Hello::main(); }} (Java) #geshi(java,number){{ public class Hello { public static void main(String[] args) { System.out.print("( ^ω^) "); } } }} *参考サイト、書籍 [#y890c8cc] --一般 ---[[日本PHPユーザーの会:http://www.php.gr.jp/]] ---[[PHP公式マニュアル:http://www.php.net/manual/ja/]] --初心者向け ---[[レッツPHP!:http://php.s3.to/tt/]]~PHPのチュウトリアルがあり、またPHPで作られた便利なサービスを提供しています。 ---[[phpspot:http://phpspot.net/php/]]~PHPエディタ、その他PHPによるwebアプリ等、PHPに関することならなんでもござれなサイトです。 ---[[PHPpro:http://www.phppro.jp/]]~PHPのコミュニティポータルサイト。 ---[[初心者向けPHP教習所まとめ:http://www.geocities.jp/vipphp/]]~かつてVIPにあった初心者向けのスレをはっけん。 *5分で作る超簡単アクセスカウター [#xcf3d923] <?php // 初期化 $count = 0; $wr = false; if (file_exists("c.dat")) { $fp = fopen("c.dat", 'r+'); } else { $fp = fopen("c.dat", 'w'); } // if ($fp != null) { flock($fp, LOCK_EX); $count = fgets($fp); if ($count == '') $count = 0; rewind($fp); $wr = fwrite($fp, ++$count); if ($wr === false) { $count = 0; } flock($fp, LOCK_UN); fclose($fp); } echo("来訪者数" . $count . "だお"); ?> *5分で作る超簡単掲示板 [#e4297c25] パースエラーが出るかもしれません。 そのときは、エラーメッセージからエラーのある行を判断して、全角スペースを半角に直してみましょう。 <?php $db = sqlite_open("log.db"); //最初に1回実行 sqlite_query($db, "create table T(num INTEGER PRIMARY KEY, name VARCHAR(40), str TEXT)"); if ($_POST['OK'] == 'OK') { sqlite_query($db, "insert into T values( NULL, '". htmlspecialchars($_POST['name'], ENT_QUOTES) ."', '". nl2br(htmlspecialchars($_POST['str'], ENT_QUOTES)). "'); "); } $f = sqlite_array_query($db, "select * from T"); sqlite_close($db); ?> <html><head><title>けいじばn</title></head><body> <?php for ($i = 0; $i < count($f); $i++) { ?> <?= $f[$i]['num'] ?>:<b><?= $f[$i]['name'] ?>さん </b><br><blockquote><?= $f[$i]['str'] ?></blockquote><hr> <?php } ?> <form method="post" action="./this.php"> 名前:<input type="text" name="name"><br>本文:<textarea name="str"></textarea><br> <input type="submit" name="OK" value="OK"> </form> *自作関数でも公開してみないか? [#tf0dd69d] 説明はこんな感じだと分かりやすい ---- **■動作内容 [#dd288d02] /* Test(①[, ②[, ③[, ④]]]) ①…1番目の引数 ②…2番目の引数 ③…3番目の引数 ④…4番目の引数 戻…戻り値 */ ---- **■URLにリンクを貼る [#g02755a0] /* str_link(①[, ②[, ③]]) ①…URLまたはURLを含む文字列 ②…ターゲット ③…タイトル(未入力の場合はURL) 戻…変換後の文字列 */ function str_link($url,$target=NULL,$title='\0'){ if($target){ $target = " target=\"".$target."\""; } $url = preg_replace('/(http:\/\/|https|\/\/)[a-zA-Z0-9\.\/_\-]+/', '<a href=":\/\/|https:\/\/)[a-zA-Z0-9\.\/_\-]+/', '<a href="\0"'.$target.'>'.$title.'</a>', $url);"'.$target.'>'.$title.'</a>', $url); return $url; } ---- **■重複するファイルを削除する [#yca1bf78] #geshi(php){{ <?php /* check_dir( ① ) ①…走査するディレクトリ 戻…成功すればtrue, 失敗すればnull */ /* サンプル //走査するディレクトリ define('MY_CHECK_DIR','C:\Documents and Settings\My Documents\My Pictures'); $dir = scandir(MY_CHECK_DIR); check_dir($dir); */ function check_dir($dir){ //最初に見つけたファイルは削除しない $denial_items = array(); foreach($dir as $item){ //.と..は無視 if(preg_match('/^(\.|\.\.)$/',$item)){ continue; } //ディレクトリだったらそのディレクトリ内も走査 if(is_dir($item)){ check_dir(scandir(MY_CHECK_DIR.$item)); }else{ //最初のファイルは削除リストに加えない if(!in_array(md5_file($item),$denial_items)){ $denial_items[] = md5_file($item); }else{ $md5_list[getcwd().'\\'.$item] = md5_file($item); } } } //削除 foreach($md5_list as $path => $md5){ unlink($path); print $path.'を削除しました。'.PHP_EOL.'MD5ハッシュ:'.$md5.PHP_EOL; } return true; } ?> }}