関数の種類
内部関数(ビルトイン関数)
ー>すぐに利用できる関数
ユーザー定義関数
自分で作成できる関数
ー>関数のオンラインリファレンス
関数とは何か?
ある処理を行ってくれるもの
例えば、今日の日付を求めたい
画面に表示させたい
文字列の長さを求めたい
関数の定義と呼び出し
引数の種類
引数の値渡しと参照(レファレンス)渡し
デフォルト引数
文字列操作
部分抜き出し
▼ 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");
}