2019年9月15日日曜日

php 関数

関数の種類

内部関数(ビルトイン関数)
ー>すぐに利用できる関数

ユーザー定義関数

自分で作成できる関数
ー>関数のオンラインリファレンス


関数とは何か?
ある処理を行ってくれるもの
例えば、今日の日付を求めたい
画面に表示させたい
文字列の長さを求めたい


関数の定義と呼び出し



引数の種類


引数の値渡しと参照(レファレンス)渡し





デフォルト引数



文字列操作

部分抜き出し

▼ substr();
$s = 'abcdef';
$t = substr($s, 2); // "cdef" 0から数えて2番目以降

$t = substr($s, 0, 2); // "ab" 0から数えて0番目から2文字長



▼ mb_substr();
マルチバイト対応の文字列の部分抜き出し

$s = 'マルチバイト';
mb_internal_encoding("SJIS-win");
$t = mb_substr($s, 0, 3); // "マルチ" 0から数えて0番目から3文字長
$t = mb_substr($s, 0, 3, "UTF-8"); // 直接文字コード指定


文字列結合演算子
$s = $head . $tail; // 連結した値を代入

$t = $head;
$t .= $tail; // 末尾に付加


変数の展開

$s = "$head$tail";

$t = "A{$head}B{$tail}C"; // 変数名の境目が曖昧になる場合にはカッコでくくる



探索(サーチ,マッチ)

▼ strpos()

if (strpos("abcdef", "c") !== false) { // 見つかった位置(0番目から)を返す
    echo "見つかりました!";
}


置換

▼ str_replace()
$s = "abcabcabc";

$t = str_replace('a', 'A', $s); // "AbcAbcAbc"





分割

▼ explode()とimplode()
$s = 'This is a pen.';

list($one, $two, $three, $four) = explode(" ", $s); // "This" "is" "a" "pen."
list($one, $two, $three) = explode(" ", $s, 3); // "This" "is" "a pen."
list(,,$three) = explode(" ", $s); // "a"

echo implode(" ", array($one, $two, $three, $four)); // "This is a pen."

$array = explode(" ", $s);
if ($i=count($array)) echo "{$i}個に分割"; // 4

echo implode($array); // "Thisisapen."
echo implode("-", $array); // "This-is-a-pen."



文字チェック

▼ strlen()

$s = "This is a pen.";

echo strlen($s); // 14


ctype系関数
ctype_digit()関数は数値が渡されると偽となる。これも真と見なすのはis_numeric()関数になる。その他似たようなものとして整数型かどうかをチェックするis_int()関数がある。


渡した文字列をチェックする関数
// [a-zA-Z0-9]の範囲
if (ctype_alnum('001abc')) echo '英数字です。';

// [a-zA-Z]の範囲
if (ctype_alpha('Abcdef')) echo '英字です。';

// [0-9]の範囲
if (ctype_digit('001009')) echo '数字です。';

// [a-z]の範囲
if (ctype_lower('abcdef')) echo '英小文字です。';

// [A-Z]の範囲
if (ctype_upper('ABCDEF')) echo '英大文字です。';

// [\x20\t\v\r\n\f]の範囲
if (ctype_space(" ")) echo '空白文字です。';

// [a-fA-F0-9]の範囲
if (ctype_xdigit("00ff9c")) echo '16進文字です。';


strtok()

文字列をトークンに分割する。


$s = "This is a pen.";

$t = strtok($s, " \n\t"); // 最初だけ文字列を渡す。空白文字で割る
while ($t !== false) {
    echo $t,"<br />
\n";
    $t = strtok(" \n\t");
}