Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

PHP辞典

  1. トップページ
  2. PHP辞典
  3. substr() / mb_substr()

substr() / mb_substr()対応: PHP 4(2000)

文字列の一部を切り出します。マルチバイト文字を含む場合は『mb_substr()』を使用することで、文字単位で正しく切り出せます。

構文
// 指定した位置から文字列を切り出します。
substr($string, $offset, $length);

// マルチバイト対応で文字列を切り出します。
mb_substr($string, $start, $length, $encoding);
関数一覧
関数概要
substr($string, $offset, $length)文字列をバイト単位で切り出します。$offset は開始位置、$length は切り出す長さで省略可能です。
mb_substr($string, $start, $length, $encoding)マルチバイト文字に対応した切り出し関数です。日本語を含む文字列ではこちらを使用してください。
戻り値

切り出された文字列を返します。$length を省略した場合は、開始位置から末尾までのすべてを返します。

サンプルコード
<?php
// 半角英数字の切り出しです。
$str = "Hello World";
echo substr($str, 6); // 位置6以降の『World』と出力されます。
echo substr($str, 0, 5); // 先頭から5文字の『Hello』と出力されます。

// 日本語の切り出しには mb_substr() を使用します。
$address = "東京都渋谷区神南";
echo mb_substr($address, 0, 3, "UTF-8"); // 『東京都』と出力されます。
echo mb_substr($address, 3, 3, "UTF-8"); // 『渋谷区』と出力されます。

// 負の値を指定すると末尾から数えた位置になります。
echo substr("Hello World", -5); // 末尾5文字の『World』と出力されます。
echo mb_substr("東京都渋谷区", -3, 3, "UTF-8"); // 『渋谷区』と出力されます。

// $length に負の値を指定すると、末尾からその文字数分を除外します。
echo substr("Hello World", 0, -6); // 末尾6文字を除いた『Hello』と出力されます。

// ファイル名から拡張子を取り出す例です。
$filename = "report_2026.pdf";
$ext = substr($filename, strrpos($filename, ".") + 1);
echo $ext; // 『pdf』と出力されます。

// 長い文章を省略して表示する例です。
$text = "これは長い文章のサンプルです。一定の文字数で省略します。";
if (mb_strlen($text, "UTF-8") > 15) {
	echo mb_substr($text, 0, 15, "UTF-8") . "..."; // 『これは長い文章のサンプルです。一...』と出力されます。
}
概要

『substr()』は文字列の一部を切り出す関数です。開始位置と長さを指定して任意の部分を取得でき、負の値を使えば末尾からの指定も可能です。日本語を含む文字列では『substr()』を使うとバイト単位で切り出されるため文字化けの原因になります。必ず『mb_substr()』を使用してください。

開始位置に負の値を指定すると文字列の末尾から数えた位置になり、長さに負の値を指定すると末尾からその文字数分が除外されます。長さを省略した場合は、開始位置から末尾までのすべてが返されます。

文字列の長さを調べるには『strlen() / mb_strlen()』、文字列を検索するには『strpos()』、文字列を分割するには『explode()』を使用してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。