PHP

http://php.net/manual/ja/index.php

http://www.php100.com/ 中国語

・PHP5.2: JSONサポート

・PHP5.3: 匿名関数、名前空間、HeredocとNowdoc、const、?:、Phar

・PHP5.4: Short Open Tag、Traits

・PHP5.5: yield、list() in foreach

・PHP5.6: 可変個引数用演算子 ... 、累乗演算子 **

・PHP7.0: useのグループ化、Null合体演算子 ??、宇宙船演算子 <=>

PHP API構成

・Array

・Calendar

・Date

・Directory

・Error

・Filesystem

・Filter

・FTP

・HTTP

・Libxml

・Mail

・Math

・Misc

・MySQL

・SimpleXML

・String

・XML

・Zip

★定数

if (!defined("ZERO")) define("ZERO", 0);

if (!defined("PI")) define("PI", 3.1415926);

echo ZERO;

echo PI;

define('MAX_VALUE', '1.0'); // クラス外に定義

const MAX_VALUE = 1.0; // クラス内に定義

マジック定数

__LINE__ ファイル上の現在の行番号

__FILE__ ファイルのフルパスとファイル名

__DIR__

__FUNCTION__ 宣言された関数名

__CLASS__ 宣言されたクラス名

__TRAIT__

__METHOD__ 宣言されたメソッド名

__NAMESPACE__

★ファイルのインクルード

require_once('../../lib/Database.php'); ×

define('ROOT' , pathinfo(__FILE__, PATHINFO_DIRNAME)); // カレントフォルダー

//require_once(ROOT . '../../lib/Database.php');

load_class('Database');

function load_class($class_name){

$path = ROOT . "../../lib/{$class_name}.php";

if(file_exists($path)){

require_once($path);

}

}

※相対パスではなく、絶対パスで指定すること(_DIR_或いはdirname(_FILE_))

★メソッド作成

function add_to_cart($item_id , $qty){

if(!is_array($item_id)){

$_SESSION['cart']['item_id'] = $qty;

}else{

foreach($item_id as $i_id => $qty){

$_SESSION['cart']['i_id'] = $qty;

}

}

}

add_to_cart( 'APPLE' , 2 );

add_to_cart( array('APPLE' => 2 , 'BANANA' => 3) );

★数値

is_int() 整数型であるか

is_float() 小数であるか

is_double() is_floatの別名

is_numeric() 数字として扱えるか、文字列でも良い

round() 小数部分を四捨五入

floor() 小数点以下切り捨て

ceil() 小数点以下切り上げ

※小数点以下何桁から丸めるかを変更できる

★文字列

単一引用符

$a = 'ABC'; // エスケープと変数展開がNG

$a = 'AB\'C'; // \が必要

$a = 'ABC\\';

二重引用符

$a = "Hello \nWorld"; // エスケープがOK

$a = "Hello $var"; // 変数展開がOK

ヒアドキュメント構文

$a = <<<EOF

Hello \nWorld

EOF;

1.エスケープと変数展開がOK

2.<<<EOF・EOF;の後にはコメントがNG

3.EOF;は必ず第1行がら初め

オフセット位置

$first = $str{0};

$first = $str[0]; // × 旧式

$last = $str{ strlen($str) - 1 };

$last = $str[ strlen($str) - 1 ]; // × 旧式

1文字を削除

ltrim($target, ',')

rtrim($target, ',')

trim($target, ',')

文字列 ⇒ 配列

配列 = explode("区切り文字", "文字列");

$array = explode(",", "AAA,BBB,CCC");

配列 ⇒ 文字列

文字列 = implode("区切り文字", "配列");

$array = array("AAA", "BBB", "CCC");

$string = implode(",", $array);

概要を作成

$article = "BREAKING NEWS: Apple Wins Ruling in Case Brought by Samsung.";

$summary = substr_replace($article, "...", 30);

// BREAKING NEWS: Apple Wins Ruli...

単語を数える

$wordCount = str_word_count($article);

文字列を分割

$text = wordwrap($article, 20, "<br />\n");

ucfirst 最初の文字を大文字にする

lcfirst 最初の文字を小文字にする

ucwords 各単語の最初の文字を大文字にする

strtoupper すべて大文字にする

strtolower すべて小文字にする

number_format 数字を千位ごとにフォーマット(123,456,789)

文字列を丸める

mb_strimwidth("Hello World", 0, 10, "..."); // Hello W...

str_replace(),strtr() 文字列の置換、strtrは複数の文字列を同時に置換できる

substr(),mb_substr() 文字列の何文字目から何文字取り出す

strlen(), mb_strlen() 文字列のバイト数を返す

strpos(), mb_strpos() 指定された文字列が何文字目に存在するか

stripos()、mb_stripos() 大文字小文字を区別しない場合

mb_convert_encoding() 文字列を指定された文字コードに変換

mb_convert_kana() ひらがな・カタカナ、全角・半角を相互に変換

mt_rand() 指定された範囲でランダムな数値を返す、randより精度が高い

is_string() 文字列であるか

int strcmp( string str1, string str2 )

int strncmp( string str1, string str2, int len )

str1 < str2 : < 0

str1 > str2 : > 0

str1 = str2 : = 0

strcasecmp() 大・小文字を区別せず

★文字列の分割

$str = 'aaa<br/>bbb<br>ccc';

$result = explode('<br/>', $str);

$result = preg_split('/<br\/?>/', $str);

// 区切り文字も結果に含む

$result = preg_split('/(<br\/?>)/', $str, null, PREG_SPLIT_DELIM_CAPTURE);

// 5文字ずつ

$result = str_split($str, 5);

$str = 'aaa,"b,b,b","c""c""c"';

$result = str_getcsv($str, ',', '"');

// ['aaa', 'b,b,b', 'c"c"c']

$str = '2016-08-29 22:00,ABC:あいう';

$result = sscanf($str, '%10s %5s,%s:%s');

preg_match('/^(.+?) (.+?),(\w+):(.*)$/', $str, $result);

// ['2016-08-29', '22:00', 'ABC', 'あいう']

preg_match('/^(?<ymd>.+?) (?<hm>.+?),(?<type>\w+):(?<msg>.*)$/', $str, $result);

// ['ymd'=>'2016-08-29', 'hm'=>'22:00', 'type'=>'ABC', 'msg'=>'あいう']

preg_match(), preg_match_all() 正規表現による一致・検索

preg_replace() 正規表現による置換

preg_quote() 正規表現の特殊文字の前にバックスラッシュをつけてエスケープ

★変数展開

安全な使い方

スカラ型

echo "This is {$var}.";

添字配列

echo "This is {$var[1]}.";

連想配列

echo "This is {$var['key1']}.";

オブジェクト

echo "This is {$var->name}.";

★配列

$empty = array(); //empty($empty):TURE、is_null($empty):FALSE

添字配列

$a = array(1, 2, 3); //インデックスは0から

$a = array(5=>1, 2, 3); //インデックスは5から

$a = array(-3=>1, -2=>2, -1=>3); //インデックスは負

$a = array(-3=>1, 2, 3); //インデックスは-3, 0, 1

$a[] = 4; // 要素の追加

unset($a[0]); // 要素の削除($a[0]アドレスが残ったまま)

unset($a); // 配列の削除

array_push($a, 4, 5); // 末尾追加(複数可)

array_pop($a); // 末尾削除

array_unshift($a, -1, 0); // 先頭追加(複数可)

array_shift($a); // 先頭削除

$arr = array(2=>3, 1=>2, 0=>1); // 降順

for ( $i=0, $cnt = count($arr); $i < $cnt; $i++ ) {

echo $arr[$i]; // 123 インデックス順

}

foreach ( $arr as $v ) {

echo $v; // 321 順序付け

}

連想配列

$arr = array('A'=>1, 'B'=>2, 'C'=>3);

foreach ( $arr as $key => $value ) {

$arr[$key] = ++$value;

}

foreach ($arr as $key => &$value) { //リファレンスを使って要素の値を変更

$value *= $value;

}

※キーのリファレンスはNG

混合型配列

$a = array(0=>1, 2, 3, 'A'=>1, 'B'=>2, 'C'=>3);

多次元配列

$arr = array();

$arr[0]["name"] = "aaa";

$arr[0]["color"] = "bbb";

$arr[1]["name"] = "ccc";

$arr[1]["color"] = "ddd";

ディレクトリ

$handle = opendir('.');

while ($file = readdir($handle)){

$files[] = $file;

}

closedir($handle);

sort($files);

$arr = array('A','B','C');

list($a, $b, $c) = $arr; // $a='A'; $b='B'; $c='C';

list($a, , $c) = $arr; // $a='A'; $c='C';

list( $year, $month, $day ) = get_ymd( time() );

function get_ymd($timestamp){

return explode('-', date("Y-m-d", $timestamp ));

}

array range( int low, int high [,int step])

$arr = range(1, 5); // array(1, 2, 3, 4, 5);

$arr = range('A','C'); // array('A', 'B', 'C');

$arr = range(1, 9, 3) // array(1, 4, 7);

$arr = range(1, 9);

rsort($arr); = $arr = range(9, 1);

int count( mixed var [, int mode] )

count(配列以外) = 1

count(null) = 0

modeがCOUNT_RECURSIVE (=1)の場合、再帰的に配列をカウント(多次元配列)

$a = array_merge($a1, $a2)、array_merge_recursive:多次元配列 // 連結

$a = array_slice($a, 1, 2); // 切り出し 引数:開始添字、要素数

$a = array_reverse($a); // 反転

$a = array_reverse($a, True); // 反転(連想配列)

bool is_array ( mixed var )

array array_keys ( array input [, mixed search_value [, bool strict]] )

bool array_key_exists ( mixed key, array search )

array array_values ( array input )

array array_unique ( array array ) 重複を除く

添字配列のソート

bool sort( array &array [, int sort_flags] ) A…Z…a…zの昇順、大・小文字を区別

bool rsort ( array &array [, int sort_flags] ) 降順

$arr = array('21','3',);

sort($arr, SORT_NUMERIC); // 3, 21 数字により

sort($arr, SORT_STRING); // 21, 3 文字列により

連想配列のソート

asort($arr); // 値の昇順

arsort($arr); // 値の降順

ksort($arr); // キーの昇順

krsort($arr); // キーの降順

usort(),uasort(),uksort() 定義した関数に基づいて配列をソート

array_multisort() 複数の配列を他の配列の値をもとにソート

配列に対し、便利な操作

function cube($n){

return($n * $n * $n);

}

$a = array(1, 2, 3);

$b = array_map('cube', $a); // 変更後の配列を作る

function output($item, $key){

echo "$key. $item<br />\n";

}

function alter(&$item, $key, $prefix){

$item = "$prefix: $item";

}

$fruits = array("a" => "lemon", "b" => "orange");

array_walk($fruits, 'output'); // 自身を書き換える

array_walk($fruits, 'alter', 'fruit');

array_walk_recursive:多次元配列

in_array() 値が含まれているか

shuffle() 配列をランダムにシャッフル

array_search() 値を検索し、見つかった場合そのキーを返す

reset() 配列のポインタを先頭の要素のセットし、その値を返す

end() 配列のポインタを最後の要素のセットし、その値を返す

※配列の最初や最後の要素を取得する目的で

next() 配列のポインタを進め、その値を返す

prev() 配列のポインタを戻し、その値を返す

current() 現在の配列のポインタが指す値を返す

extract() 連想配列のキー部分を変数名とする変数を作る

list() 配列を引数として与えられた複数の変数に分けて代入する

$ary = [1, 2, 3, 4, 5];

$result = array_chunk($ary, 2);

// [[1,2], [3,4], [5]]

★+ と array_merge

$a1 = [ 'a' => 1, 'b' => 2, 3];

$a2 = [ 'b' => 4, 'c' => 5, 6];

$a1 + $a2

// ['a' => 1, 'b' => 2, 0 => 3, 'c' => 5]

// keyとindex 共に先勝ち

array_merge($a1, $a2)

// ['a' => 1, 'b' => 4, 0 => 3, 'c' => 5, 1 => 6]

// keyなら後勝ち、indexなら連番

$b1 = [1, 2, 3];

$b2 = [4, 5, 6];

$b1 + $b2

// [0 => 1, 1 => 2, 2 => 3]

array_merge($b1, $b2)

// [0 => 1, 1 => 2, 2 => 3, 3 => 4, 4 => 5, 5 => 6]

★HTMLタグ関連

URLを自動リンクに

$text = "Welcome to here(http://sites.google.com/site/webdevelopart/)";

$pattern = "/http:\/\/([A-z0-9.\/-]+)/";

//$pattern = "/(https?:\/\/[a-zA-Z0-9.\/~_]+)/";

$linkText = preg_replace($pattern, "<a href='$0'>$0</a>", $text);

HTMLタグを除く

$text = strip_tags($input);

$text = strip_tags($input, '<a>'); // <a>を無視

特殊文字をHTMLエンティティに変換

htmlspecialchars()

※ENT_QUOTESフラグを用いてシングルクォートも変換対象にする

function h($str, $encode='UTF-8') {

return htmlspecialchars($str, ENT_QUOTES, $encode);

}

改行⇒HTMLタグ

$comment = nl2br("aaa \n bbb"); // aaa <br /> bbb

is_uploaded_file() 不正操作を防ぐ、POSTによりアップロードされたファイルであるか

move_uploaded_file() POSTによりアップロードされたファイルである場合、指定されたファイル名に移動

header() 生のHTTPヘッダーを出力

※「Location: http://www.example.com」でリダイレクト

http_build_query() 連想配列からURLエンコードされたクエリ文字列を生成

rawurlencode() 非アルファベット文字を%と16進数を用いてURLとして利用できる文字列に変換

rawurldecode() 元の文字列を復元

filter_input() GET、POST などのパラメータをフィルタリングしたうえで受け取る

filter_var() 指定したフィルターでデータをフィルタリング

※メールアドレスとして正しい書式であるか、特殊文字を取り除いたり

session_start() セッションを開始、セッションIDを渡して現在のセッションを復帰

session_regenerate_id() セッションの情報を位置したままセッションIDを新しく生成した値に置き換える

※セッションハイジャック攻撃を防ぐ手段

session_destroy() セッション情報を全て破棄

setcookie() クッキーに値を保存する、有効期限も設定

hash() 選択したアルゴリズムに基づいてハッシュ値を生成

md5() MD5アルゴリズムを用いてハッシュ値を生成

password_hash() 選択したアルゴリズムを用いてパスワード用のハッシュ値を生成

password_verify() 作られたパスワードと生のパスワード文字列がマッチするかを検証

base64_encode(), base64_decode() MIME base64 方式でエンコード、デコード

json_encode(), json_decode() 連想配列 ←→ JSON

※第二引数にtrueを指定すると stdClass Object の代わりに連想配列に変換

mb_send_mail() mb_languageにより設定された言語に基づいてエンコード変換を行ってメールを送信

★Submitチェック

if( $_SERVER['REQUEST_METHOD'] == 'POST' and isset($_POST['submit']) ){

// do something

}

★セッションのsetterとgetter

define('APP_ID', 'xxx');

function session_get($key){

$k = APP_ID . '.' . $key;

if(isset($_SESSION[$k])){

return $_SESSION[$k];

}

return false;

}

function session_set($key, $value){

$k = APP_ID . '.' . $key;

$_SESSION[$k] = $value;

return true;

}

★echo、print、print_r、printf、sprintf、var_dump比較

echo

printよりやや速い

メソッドではなく、キーワードである

echo "a"," b"," c."; //a b c. 「,」で連結 やや速い

echo "a"." b"." c."; //a b c. 「.」で連結

$name = "Andy";

echo "My name is $name\n"; //My name is Andy

echo 'My name is $name\n'; //My name is $name\n

「"」間は、$変数 や \n が埋め込み展開される

単純に文字列を出力する場合に「'」を使う

print "My name is $a. I am $b";

echo "My name is $a. I am $b";

echo "My name is " . $a . ". I am " . $b;

echo "My name is " , $a , ". I am " , $b;

echo 'My name is ' , $a , '. I am ' , $b; 一番速い

echo "a

b

c."; //a b c. 改行でも一行で出力

print

メソッドではなく、キーワードである

//print "a"," b"," c."; ×

print "a

b

c."; //a b c. 改行でも一行で出力

$name = "Andy";

print "My name is $name"; //My name is Andy

print 'My name is $name'; //My name is $name echoと同じ

//$a = echo("aaa"); ×

$b = print("aaa"); 或いは $b = print "aaa";

echo $b; //戻り値は固定で1である

print_r

$a="aaa";

$b = print_r($a);

echo $b; //戻り値は固定で1である

$a = array("name"=>"Andy","age"=>20,"birth"=>"2002-01-01");

print_r($a); //Array ( [name] => Andy [age] => 20 [birth] => 2002-01-01 )

print($a); //Array

※第二引数に true を指定して結果を文字列として返す

printf

printf("My name is %s %s.","Andy", "Liu"); //My name is Andy Liu.

printf("My name is %1\$s %1\$s.","Andy", "Liu"); //My name is Andy Andy.

printf("My name is %2\$s %1\$s.","Andy", "Liu"); //My name is Liu Andy.

%1,%2は表示順番

%% . %

%b . 2进制

%c . ASCII

%d . 10进制(符合あり)

%e . 1.5e+3

%u . 10进制(符合なし)

%f . float(local settings aware)

%F . float(not local settings aware)

%o . 8进制

%s . 文字列

%x . 16进制(小文字)

%X . 16进制(大文字)

sprintf

printfと違うのは出力しないこと

sprintf("My name is %s %s","Andy", "Liu"); //出力なし

$out = sprintf("My name is %s %s","Andy", "Liu");

echo $out; //My name is Andy Liu.

$out = sprintf("%06.2f", 15.256);

echo $out; // 015.26

※6:数値全体の桁数、2:四捨五入の桁数、0:0で埋め込み

$filename = sprintf("data_%s.csv", date("Ymd-hi"));

date( "Y年m月d日 H時i分s秒" );

sprintf( "%04d年%02d月%02d日", 2012, 3, 1); // 2012年03月01日

var_dump

詳細情報(型、値など)を出力するため、デバッグ用

★関数

可変長引数

$sum = sum(1, 2, 3, 4, 5);

function sum(){

$args = func_num_args();

for( $sum=$i=0; $i < $args; $i++ ){

$sum += func_get_arg($i);

}

return $sum;

}

function test($arg1, $arg2){ ... }

可変関数

$func = 'test';

$func("aaa", "bbb");

関数コール

call_user_func( "test", "aaa", "bbb");

call_user_func_array( "test", array("aaa", "bbb") );

匿名関数

PHP5.2以前

$func = create_function('$arg1, $arg2', '...');

PHP5.3以降

$func = function($arg1, $arg2){...};

usort($arr, $func);

$func("aaa", "bbb");

call_user_func( $func, "aaa", "bbb");

★変数のスコープ

globalキーワード

グローバル変数をローカル変数として定義すること

$a = 'global';

func1();

func2();

function func1(){

echo $a; // 警告:定義されない

$a = 'local';

echo $GLOBALS['a']; // global

global $a;

echo $a; // global

}

function func2(){

global $a;

$a = 'local';

echo $GLOBALS['a']; // local

}

staticキーワード

関数内のローカル変数でのみ使用できる

リファレンスを保存するのができない

echo counter(); // 1

echo counter(); // 2

echo counter(); // 3

function counter() {

static $a = 0;

//static $a = 1 + 2; // NG

//static $a = sqrt(2); // NG

return ++$a;

}

★ファイルを安全に操作

〇読み込み

書き方1

if( file_exists($filename) && is_readable($filename) ) {

$fh = fopen($filename, "r");

...

fclose($fh);

}

書き方2

if( $fh = fopen($filename, "r") ) {

...

fclose($fh);

}

〇書き込み

$dir = '/var/www/project/';

$file_path = $dir . "test.txt";

if(is_writable($dir)){

file_put_contents($file_path , $contents);

//ファイル権限

chmod($file_path, 0644); // rw-r--r--

chmod($file_path, 0755); // rwxr-xr-x

}else{

die("Directory $dir is not writable, or does not exist.");

}

★CSVファイルの読み込み

$fh = fopen("test.csv", "r");

while( $line = fgetcsv($fh, 1000, ",") ){

echo "Content: {$line[1]}";

}

★iniファイルの読み込み

config.ini

; Comment

[section1]

name = Andy

address = Tokyo

[section2]

color = Green

$array = parse_ini_file("config.ini");

print_r $array;

出力:

Array

(

[name] => Andy

[address] => Tokyo

[color] => Green

)

$array = parse_ini_file("config.ini", true);

print_r $array;

出力:

Array

(

[section1] => Array

(

[name] => Andy

[address] => Tokyo

)

[section2] => Array

(

[color] => Green

)

)

★外部プログラムの実行

exec 外部プログラムを実行

passthru 外部プログラムを実行し、未整形の出力を表示

system 外部プログラムを実行し、出力を表示

function execCmd($command){

if(function_exists('system')){

ob_start();

system($command, $return_var);

$output = ob_get_contents();

ob_end_clean();

}else if(function_exists('passthru')){

ob_start();

passthru($command, $return_var);

$output = ob_get_contents();

ob_end_clean();

}else if(function_exists('exec')){

exec($command, $output, $return_var);

$output = implode("\n", $output);

}else if(function_exists('shell_exec')){

$output = shell_exec($command) ;

}else{

$output = 'No any command on this system';

$return_var = 1;

}

return array('output' => $output, 'status' => $return_var);

}

★SQL文の作成

function insert_record($table_name, $data){

foreach($data as $key => $value){

//mysqli_real_escape_string

$data[$key] = $db->mres($value);

}

$fields = implode(',', array_keys($data));

$values = "'" . implode("','", array_values($data)) . "'";

$query = "INSERT INTO {$table}($fields) VALUES($values)";

return $db->query($query);

}

$data = array('name' => $name, 'email' => $email, 'address' => $address);

insert_record('users', $data);

★バージョン比較

書き方1

if (version_compare("5.2.0", PHP_VERSION, ">=")) {

...

}

if (version_compare(PHP_VERSION, '5.0.0', '<')) {

...

}

書き方2

if (version_compare(PHP_VERSION, '5.3.0') >= 0) {

...

}

★URL解析

/index.php?name=andy&gender=male#top

$_SERVER["QUERY_STRING"] name=andy&gender=male

$_SERVER["REQUEST_URI"] /index.php?name=andy&gender=male

$test = pathinfo("http://localhost/index.php");

print_r($test);

[dirname] => http://localhost

[basename] => index.php

[extension] => php

[filename] => index

$test = parse_url("http://localhost/index.php?name=andy&gender=male#top");

print_r($test);

[scheme] => http

[host] => localhost

[path] => /index.php

[query] => name=andy&gender=male

[fragment] => top

$test = basename("http://localhost/index.php?name=andy&gender=male#top");

echo $test;

index.php?name=andy&gender=male#top

★SPL(Standard PHP Library)

// メモリから消えると、fcloseする

$file = new SplFileObject($path);

$file->setFlags(SplFileObject::READ_CSV);

foreach ($file as $line) {

echo $line[0];

}

// サイズが大きくて、array_mergeでは心配な時

$ite = new AppendIterator();

$ite->append(new ArrayIterator([1,2,3]));

$ite->append(new ArrayIterator([4,5,6]));

foreach ($ite as $a) {

echo $a;

}

$ite = new ArrayIterator([1,2,3,4,5,6,7]);

$ite = new LimitIterator($ite, 2, 4); // 3456

$ite = new CallbackFilterIterator($ite,

function($current, $key, $iterator) {

return $current % 2 == 0; // 246

}

);

★clone

$o = new StdClass;

$o->n = 1;

$_o = clone $o;

$_o->n = 2;

echo $o->n; // 1 (cloneしなかったら、2になる)

echo $_o->n; // 2

★ファイル操作

file_get_contents() ファイルの内容或いはURLでウェブサイトのソースをすべて取得

file_put_contents() 文字列をファイルとして保存する、モードを指定して追記したり排他ロックしたり

basename() ファイルやディレクトリのパスから最後にある名前の部分を返す

dirname() ファイルパスからディレクトリパスを取り出す

dirname(__FILE__) 実行中のPHPファイルのあるディレクトリを得る、__DIR__と同義

realpath() 絶対パスを返す

file_exists() ファイルが存在するか

fopen() ファイルやURLをオープンしてストリームに結びつける

flock() オープンされたファイルのロック・開放を行う

fgets() 一行取得

fgetcsv() 一行取得し、指定された文字をもとに区切られた配列を返す

fwrite() オープンされたファイルストリームに書き込む

fclose() オープンされたファイルポインタをクローズ

rewind() ファイルポインタの位置を先頭に戻す

ftruncate() ファイルの内容を指定した長さに丸める

※サイズに0を指定するとファイルを空にできる

feof() ファイルポインタが終端に達しているか

mkdir() ディレクトリを作る、パーミッションを設定したり入れ子構造のディレクトリを作ったり

unlink() ファイルを削除

rmdir() ディレクトリを削除

rename() ファイル名を変える(移動)

copy() ファイルをコピー

chmod() ファイルのパーミッションを変更

chown() ファイルのオーナーを変更

is_file() 指定されたパスがファイルを指しているか

is_dir() 指定されたパスがディレクトリを指しているか