PHP

PHPで文字列操作をマスター!substr関数の使い方


こんにちは、PHPを使っている皆さん!今日はPHPで文字列を操作する基本的な関数の一つ、substr関数について詳しく学んでいきましょう。substr関数を使うと、文字列から特定の部分を抽出することができます。この便利な関数を使いこなすことで、データ処理やテキスト処理の幅が広がります。

substr関数の基本

substr関数の基本的な構文は以下の通りです。

substr(string $string, int $start [, int $length])
  • $string : 処理対象の文字列。
  • $start : 開始位置(0から始まるインデックス)。負の値を指定すると文字列の末尾からの位置指定になります。
  • $length : 抽出する長さ。このパラメータは任意で、指定しない場合は$startから文字列の末尾までが抽出されます。負の値を指定すると、文字列の末尾から数えてその数だけ除外された部分が取得されます。

簡単な使用例

$text = "Hello,world!";
echo substr($text, 7, 5); // "world"

この例では、”Hello, world!”という文字列から、インデックス7(wの位置)から5文字分(world)を抽出しています。

負のインデックスの使用

substrを使って文字列の末尾から部分文字列を抽出する例です。

$text = "Hello, world!";
echo substr($text, -6, 5); // "world"

ここでは、文字列の末尾から6文字目から5文字を抽出しています。これは” world!”の部分からスペースを除いた”world”を取得しています。

lengthパラメータの異なる使用方法

$lengthに負の値を指定して、末尾の特定の文字を除外する方法です。

$text = "Hello, world!";
echo substr($text, 0, -7); // "Hello, "

このコードでは、最初から始まり末尾の7文字(”, world!”)を除外した部分が出力されます。

実用的な例

a. 部分文字列の抽出

ユーザーが入力したメールアドレスからドメイン部分を抽出する場合を考えてみましょう。

$email = "user@example.com";
$domain = substr($email, strpos($email, '@') + 1);
echo $domain; // 出力: "example.com"

URLからドメイン名を抽出します。

$url = "https://www.example.com/path?query=123";
$start = strpos($url, "://") + 3;
$end = strpos($url, "/", $start);
$domain = substr($url, $start, $end - $start);
echo $domain;  // 出力: www.example.com

URLからファイル名を取得します。

$url = "https://example.com/images/image.jpg";
$filename = basename($url);
$filepath = substr($filename, 0, strrpos($filename, "."));
echo $filepath; // 結果: image

b. 固定長の部分文字列を抽出

ログファイルから特定の情報を抽出する場合、固定長の部分文字列を抽出することがよくあります。

$logEntry = "2024-05-31 12:45:00 ERROR Server not responding";
$date = substr($logEntry, 0, 10);
$time = substr($logEntry, 11, 8);
$logLevel = substr($logEntry, 20, 5);
echo $date;     // 出力: "2024-05-31"
echo $time;     // 出力: "12:45:00"
echo $logLevel; // 出力: "ERROR"

c. 部分的なデータのマスキング

クレジットカード番号や個人情報を部分的に隠すために使用できます。

$cardNumber = "1234-5678-9876-5432";
$maskedCardNumber = substr($cardNumber, 0, 4) . "-****-****-" . substr($cardNumber, -4);
echo $maskedCardNumber; // 出力: "1234-****-****-5432"

d. テキストの先頭部分をトリミング

テキストの最初の数文字をトリミングする場合に有効です。

$text = "Hello, World!";
$trimmedText = substr($text, 7);
echo $trimmedText; // 出力: "World!"

まとめ

substr関数はPHPにおける文字列操作で非常に重要なツールの一つです。この関数の機能を理解し、適切に使いこなすことで、テキスト処理やデータ処理の幅を大きく広げることができます。是非、様々な場面で活用してみてください!

アバター画像

Groworks Inc.

ものづくりのまち燕三条にある三条ものづくり学校を拠点とし、新潟市、長岡市、燕市、柏崎市を中心に活動しているウェブサイト・ホームページ制作会社です。