ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
PHP 内部関数とは
PHP 内部関数 (built-in functions / internal functions) は、追加の require やオートロード不要で使える標準提供の関数です。C 言語で実装され、PHP のエンジンに直接組み込まれているため高速に動作します。文字列、配列、数値、ファイル、日付、正規表現、JSON、URL、ハッシュなど膨大なカテゴリがあり、PHP 開発の生産性を支えています。
文字列関数
| 関数 | 用途 |
|---|---|
strlen($s) | バイト長 (ASCII 用) |
mb_strlen($s) | マルチバイト文字数 (UTF-8) |
substr($s, $start, $len) | 部分文字列 |
mb_substr($s, $start, $len) | マルチバイト対応 |
str_replace($from, $to, $s) | 置換 |
preg_replace($pattern, $to, $s) | 正規表現置換 |
explode($sep, $s) | 区切り文字で配列化 |
implode($sep, $arr) | 配列を文字列に結合 |
sprintf($fmt, ...) | フォーマット文字列生成 |
strtolower / strtoupper | 大小文字変換 |
trim / ltrim / rtrim | 前後空白除去 |
str_pad | パディング |
strpos / strrpos | 部分文字列位置 |
str_contains (8.0+) | 含有判定 |
str_starts_with / str_ends_with (8.0+) | 先頭/末尾判定 |
// 基本
$s = "Hello, World!";
strlen($s); // 13
mb_strlen("こんにちは"); // 5 (UTF-8 で 1 文字単位)
substr($s, 7, 5); // "World"
str_replace("World", "PHP", $s); // "Hello, PHP!"
// 区切り
explode(",", "a,b,c"); // ["a","b","c"]
implode("-", ["a","b","c"]); // "a-b-c"
// PHP 8.0+
str_contains("Hello", "ell"); // true
str_starts_with("Hello", "He"); // true
str_ends_with("Hello", "lo"); // true
// sprintf でフォーマット
sprintf("price: %05d JPY", 1234); // "price: 01234 JPY"
sprintf("%.2f%%", 92.5); // "92.50%"
配列関数
| 関数 | 用途 |
|---|---|
count($arr) | 要素数 |
array_map($fn, $arr) | 各要素を変換 |
array_filter($arr, $fn) | 条件を満たす要素のみ |
array_reduce($arr, $fn, $init) | 畳み込み |
in_array($x, $arr) | 含有判定 |
array_keys / array_values | キー / 値の配列 |
array_merge($a, $b) | 結合 |
array_combine($keys, $vals) | キーと値で連想配列 |
array_unique($arr) | 重複除去 |
sort / rsort / asort / ksort | 各種ソート |
array_slice / array_splice | 部分取得 / 削除挿入 |
array_search | 値からキーを検索 |
array_column | 連想配列から列抽出 |
array_chunk | N 個ずつに分割 |
$nums = [1, 2, 3, 4, 5];
// 各要素を 2 倍
array_map(fn($x) => $x * 2, $nums); // [2, 4, 6, 8, 10]
// 偶数のみ
array_filter($nums, fn($x) => $x % 2 === 0); // [2, 4]
// 合計
array_reduce($nums, fn($carry, $x) => $carry + $x, 0); // 15
// 連想配列の列抽出
$users = [
['id' => 1, 'name' => 'Alice'],
['id' => 2, 'name' => 'Bob'],
];
array_column($users, 'name'); // ['Alice', 'Bob']
array_column($users, 'name', 'id'); // [1=>'Alice', 2=>'Bob']
// ソート
$arr = [3, 1, 4, 1, 5];
sort($arr); // [1, 1, 3, 4, 5]
usort($arr, fn($a, $b) => $b - $a); // [5, 4, 3, 1, 1]
// chunk
array_chunk([1,2,3,4,5,6,7], 3); // [[1,2,3],[4,5,6],[7]]
数値関数
| 関数 | 用途 |
|---|---|
intval($x) / (int)$x | 整数変換 |
floatval / (float) | 浮動小数変換 |
round($x, $digits) | 四捨五入 |
ceil / floor | 切り上げ / 切り下げ |
abs($x) | 絶対値 |
max / min | 最大 / 最小 |
pow($x, $y) / ** | べき乗 |
sqrt / log / exp | 平方根 / 対数 / 指数 |
rand / mt_rand / random_int | 乱数 (推奨は random_int) |
number_format($x, 2) | 桁区切り表示 |
round(3.14159, 2); // 3.14
round(2.5); // 3 (PHP_ROUND_HALF_UP デフォルト)
round(2.5, 0, PHP_ROUND_HALF_EVEN); // 2 (銀行家丸め)
ceil(3.1); // 4
floor(3.9); // 3
number_format(1234567.891, 2, '.', ','); // "1,234,567.89"
// 暗号学的に安全な乱数
random_int(1, 100);
// 1000-9999 の 4 桁数値
$pin = random_int(1000, 9999);
日付・時刻
// 関数ベース
date('Y-m-d H:i:s'); // 現在日時 "2026-06-10 12:34:56"
date('Y-m-d', strtotime('+1 day')); // 明日
date('Y-m-d', strtotime('-1 week')); // 1 週間前
mktime(12, 0, 0, 6, 10, 2026); // タイムスタンプ
strtotime('2026-06-10'); // パース
// DateTime クラス (オブジェクト指向、PHP 5.2+)
$dt = new DateTime('2026-06-10');
$dt->modify('+1 month');
echo $dt->format('Y-m-d'); // "2026-07-10"
// DateTimeImmutable (不変、PHP 5.5+)
$dt = new DateTimeImmutable();
$tomorrow = $dt->modify('+1 day'); // 元は変わらない
// 差分
$diff = $dt->diff(new DateTime('2027-01-01'));
echo $diff->days; // 日数差
// タイムゾーン
$dt = new DateTime('now', new DateTimeZone('Asia/Tokyo'));
ファイル・I/O
// 全読み込み
$content = file_get_contents('data.txt');
// 全書き込み
file_put_contents('out.txt', "hello\n");
file_put_contents('log.txt', "line\n", FILE_APPEND | LOCK_EX);
// 行単位読込
foreach (file('data.txt') as $line) {
echo trim($line);
}
// ストリーミング (大きいファイル)
$fp = fopen('huge.txt', 'r');
while (($line = fgets($fp)) !== false) {
// 処理
}
fclose($fp);
// CSV
$fp = fopen('data.csv', 'r');
while (($row = fgetcsv($fp)) !== false) {
print_r($row);
}
// 存在 / 種類確認
file_exists($path);
is_file($path);
is_dir($path);
is_readable($path);
// パス操作
basename('/var/www/index.php'); // "index.php"
dirname('/var/www/index.php'); // "/var/www"
pathinfo('/var/www/index.php'); // ['dirname','basename','extension','filename']
JSON / URL / Hash
// JSON
$json = json_encode(['name' => 'Alice', 'age' => 30]);
$arr = json_decode($json, true); // true で連想配列
json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
// URL
$encoded = urlencode("hello world&foo=bar"); // "hello+world%26foo%3Dbar"
$decoded = urldecode($encoded);
$query = http_build_query(['q' => 'php', 'page' => 2]);
// "q=php&page=2"
parse_url('https://example.com/path?id=1#sec');
// ['scheme','host','path','query','fragment']
// ハッシュ
md5('hello'); // 'b1946ac9...'
sha1('hello');
hash('sha256', 'hello');
password_hash('secret', PASSWORD_BCRYPT); // bcrypt (推奨)
password_verify('secret', $hash); // 照合
正規表現
// マッチ
if (preg_match('/^\d{3}-\d{4}$/', '123-4567')) {
echo "電話番号形式";
}
// 全マッチ
preg_match_all('/\d+/', 'a1 b2 c3', $matches);
// $matches[0] = ['1', '2', '3']
// 置換
preg_replace('/\s+/', ' ', "hello world"); // "hello world"
// コールバック置換
preg_replace_callback('/\d+/', fn($m) => $m[0] * 2, "a1 b2 c3");
// "a2 b4 c6"
// 分割
preg_split('/[\s,]+/', "a, b c , d"); // ["a","b","c","d"]
変数・型判定
// 型判定
is_string($x);
is_int($x); // is_integer の別名
is_float($x); // is_double の別名
is_array($x);
is_object($x);
is_null($x);
is_bool($x);
is_numeric($x); // "42" や "3.14" も true
is_callable($x); // 関数として呼び出せるか
// 型取得
gettype($x);
// 変数の存在
isset($var); // 定義済 && null でない
empty($var); // null / "" / 0 / "0" / false / []
is_null($var);
// 変数情報
var_dump($x); // 型付きダンプ
print_r($x); // 配列など
debug_backtrace();
FAQ
Q: strlen でマルチバイト文字数が変
A: strlen はバイト数。UTF-8 では「あ」が 3 バイト = 3。文字数なら mb_strlen を使ってください。
Q: rand() と random_int() どちらを使う?
A: 一般用途は mt_rand() でも OK ですが、パスワード生成・トークンには必ず random_int() / random_bytes()。
Q: 配列ソートで連想配列のキーが変わってしまう
A: sort() はキーを振り直します。キーを保持したいなら asort() (値ソート、キー保持) / ksort() (キーソート) を使ってください。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
同階層のページ
- インストール方法
- 文法
- Composerのインストール
- 内部関数
- フレームワーク
- エラー一覧
- 改行出力
- printとechoの違い
- シングルクォートとダブルクォートの違い
- returnとyieldの違い
- var_dumpをログ出力
- CSV読み込み
- 待機・処理の遅延
- ログファイルにエラーを出力する方法
- エラーログ出力関数
- URLパラメータの配列化
- empty, is_null. issetの判定比較表
- httpステータスコードの付与
- バージョンの確認
- php.ini
- APIを呼び出す方法
- 外部ファイルを呼び出す方法
- カンマ区切りの文字列を配列に変換
- 配列からランダムに値を取り出す方法
- Webスクレイピング
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?