言語の特徴

PHPのナイスな点としては

  • MySQL等に代表されるデータベースとの親和性の高さ

等が上げられるような気がします。
まずは、PHPの実行環境を整えましょう。 (ゆとり専用)

Javaとオブジェクト指向を用いたPHPの比較

(PHP)

  1. class Hello {
  2.   public static function main($args = array()) {
  3.     printf("( ^ω^) ");
  4.   }
  5. }
  6. Hello::main();

(Java)

  1. public class Hello {
  2.   public static void main(String[] args) {
  3.     System.out.print("( ^ω^) ");
  4.   }
  5. }

参考サイト、書籍

5分で作る超簡単アクセスカウター

<?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分で作る超簡単掲示板

パースエラーが出るかもしれません。 そのときは、エラーメッセージからエラーのある行を判断して、全角スペースを半角に直してみましょう。

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

自作関数でも公開してみないか?

説明はこんな感じだと分かりやすい


■動作内容

/*
  Test(①[, ②[, ③[, ④]]])
  ①…1番目の引数
  ②…2番目の引数
  ③…3番目の引数
  ④…4番目の引数
  戻…戻り値
*/

■URLにリンクを貼る

/*
  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;
}

■重複するファイルを削除する

  1. <?php
  2. /*
  3.     check_dir( ① )
  4.     ①…走査するディレクトリ
  5.     戻…成功すればtrue, 失敗すればnull
  6. */
  7.  
  8. /*
  9. サンプル
  10.  
  11. //走査するディレクトリ
  12. define('MY_CHECK_DIR','C:\Documents and Settings\My Documents\My Pictures');
  13.  
  14. $dir = scandir(MY_CHECK_DIR);
  15. check_dir($dir);
  16. */
  17.  
  18. function check_dir($dir){
  19.     //最初に見つけたファイルは削除しない
  20.     $denial_items = array();
  21.     foreach($dir as $item){
  22.         //.と..は無視
  23.         if(preg_match('/^(\.|\.\.)$/',$item)){
  24.             continue;
  25.         }
  26.         //ディレクトリだったらそのディレクトリ内も走査
  27.         if(is_dir($item)){
  28.             check_dir(scandir(MY_CHECK_DIR.$item));
  29.         }else{
  30.             //最初のファイルは削除リストに加えない
  31.             if(!in_array(md5_file($item),$denial_items)){
  32.                 $denial_items[] = md5_file($item);
  33.             }else{
  34.                 $md5_list[getcwd().'\\'.$item] = md5_file($item);
  35.             }
  36.         }
  37.     }
  38.     //削除
  39.     foreach($md5_list as $path => $md5){
  40.         unlink($path);
  41.         print $path.'を削除しました。'.PHP_EOL.'MD5ハッシュ:'.$md5.PHP_EOL;
  42.     }
  43.  
  44.     return true;
  45. }
  46. ?>