0Pricing
PHP Academy · レッスン

部分文字列とパディング関数

substr、str_pad、wordwrapを使って文字列の一部を抽出・整形します

「部分文字列とパディング関数」はCoddyKit上の無料PHP Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPHP Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 PHP Academyコースには全4レッスンが含まれています。

文字列の一部を取り出す

PHPには、文字列を取り出したり、切り詰めたり、パディングしたりする強力な関数があります。これらは出力のフォーマットやテキストデータの処理に不可欠です。

substr()

開始位置と、必要に応じて長さを指定して文字列の一部を取り出します:

<?php
$str = 'Hello, World!';

echo substr($str, 7);        // World!
echo substr($str, 7, 5);    // World
echo substr($str, -6);      // World!
echo substr($str, -6, 5);   // World

mb_substr()

マルチバイト文字列(UTF-8)から正しく取り出すには、mb_substr()を使用します:

<?php
$str = 'Привет Мир'; // Russian

// substr counts bytes, not characters:
echo strlen($str);      // 19 bytes

// mb_substr counts characters:
echo mb_substr($str, 0, 6); // Привет

str_pad()

文字列を指定した長さまで埋めます:

<?php
// Default: right-pad with spaces
echo str_pad('5', 3, '0', STR_PAD_LEFT);   // 005
echo str_pad('PHP', 10);                    // 'PHP       '
echo str_pad('hi', 8, '-', STR_PAD_BOTH);  // ---hi---

// Format invoice numbers:
echo 'INV-' . str_pad(42, 5, '0', STR_PAD_LEFT); // INV-00042

wordwrap()

指定した幅で文字列を折り返します。単語の途中では分割しません:

<?php
$text = 'The quick brown fox jumped over the lazy dog';

echo wordwrap($text, 15, PHP_EOL, false);
// The quick brown
// fox jumped over
// the lazy dog

chunk_split()

N文字ごとに区切り文字列を挿入します。base64のようなエンコード出力に便利です:

<?php
$data = '1234567890ABCDEF';

echo chunk_split($data, 4, '-');
// 1234-5678-90AB-CDEF-

// Typical use: base64 encoded email attachments
$encoded = base64_encode(file_get_contents('file.bin'));
$formatted = chunk_split($encoded, 76, "\n");

nl2br()

改行をHTMLの<br>タグに変換して、ブラウザーに表示します:

<?php
$text = "Line one\nLine two\nLine three";

echo nl2br($text);
// Line one<br />\nLine two<br />\nLine three

フォーマット済み文字列のためのsprintf()

sprintf()はプレースホルダーを使って文字列をフォーマットします。構造化された出力の生成に便利です:

<?php
$name  = 'Alice';
$score = 95.5;
$rank  = 1;

$line = sprintf('%-10s %6.2f%%  #%d', $name, $score, $rank);
echo $line;
// Alice       95.50%  #1

number_format()

桁区切りと小数点を付けて、数値を文字列としてフォーマットします:

<?php
$amount = 1234567.891;

echo number_format($amount);                   // 1,234,568
echo number_format($amount, 2);               // 1,234,567.89
echo number_format($amount, 2, ',', '.');     // 1.234.567,89 (European)
echo number_format($amount, 2, '.', '');      // 1234567.89 (no separator)

省略記号による文字列の切り詰め

表示用の長いテキストを、省略記号を付けて安全に切り詰めます:

<?php
function truncate(string $text, int $max, string $suffix = '...'): string {
    if (mb_strlen($text) <= $max) return $text;
    return mb_substr($text, 0, $max - mb_strlen($suffix)) . $suffix;
}

echo truncate('The quick brown fox', 15);
// The quick br...

文字列の反転

strrev()で文字列を反転します(マルチバイト文字には対応せず、バイト単位で処理します):

<?php
echo strrev('Hello');  // olleH
echo strrev('12345');  // 54321

// Palindrome check
function isPalindrome(string $s): bool {
    $s = strtolower(preg_replace('/[^a-zA-Z]/', '', $s));
    return $s === strrev($s);
}

var_dump(isPalindrome('racecar'));  // true
var_dump(isPalindrome('PHP'));      // false

文字列の繰り返しと埋め込み

フォーマットやパディングのために、繰り返しパターンの文字列を作成します:

<?php
// Build a progress bar
function progressBar(int $percent, int $width = 20): string {
    $filled = (int) round($percent / 100 * $width);
    $empty  = $width - $filled;
    return '[' . str_repeat('#', $filled) . str_repeat('-', $empty) . "] $percent%";
}

echo progressBar(65);  // [#############-------] 65%

確認問題

文字列にN文字ごとに区切り文字を挿入する関数はどれですか:

まとめ: 部分文字列とパディング

主な関数:

  • substr($str, start, length) — 位置を指定して取り出す
  • mb_substr() — マルチバイト文字に対応した取り出し
  • str_pad() — 指定した長さまで埋める
  • wordwrap() — 単語の境界で折り返す
  • chunk_split() — N文字ごとに区切り文字を挿入
  • sprintf() — フォーマット済み文字列を作成

よくある質問

「部分文字列とパディング関数」レッスンは無料ですか?

はい。「部分文字列とパディング関数」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、PHP Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 PHP Academyコースには全4レッスンが含まれています。

「部分文字列とパディング関数」で何を学びますか?

substr、str_pad、wordwrapを使って文字列の一部を抽出・整形します ブラウザで直接実行するハンズオンコードでPHP Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

PHP Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのPHP Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「部分文字列とパディング関数」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このPHP Academyレッスンでコードを書いて実行できますか?

はい。すべてのPHP Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 文字列の基礎と連結
  2. 文字列の検索と置換
  3. 部分文字列とパディング関数
  4. 文字列の分割と結合
← PHP Academyに戻る