関数・クラス解説

substr

version:PHP 4, PHP 5, PHP 7 (公式)

文字列の一部分を返す

公式リファレンス

書式

substr ( string $string , int $start [, int $length ] ) : string|false

説明

文字列 string の、start で指定された位置から length バイト分の文字列を返します。

パラメータ

string
入力文字列。
start
start が正の場合、返される文字列は、 string の 0 から数えて start番目から始まる文字列となります。 例えば、文字列'abcdef'において位置 0にある文字は、'a'であり、 位置2には'c'があります。 start が負の場合、返される文字列は、 stringの後ろから数えて start番目から始まる文字列となります。 string の長さが start 文字より短い場合は FALSE が返されます。
例1 負の start の使用
$rest = substr("abcdef", -1);    // "f" を返す $rest = substr("abcdef", -2);    // "ef" を返す $rest = substr("abcdef", -3, 1); // "d" を返す
length
length が指定され、かつ正である場合、 返される文字列は start (string の長さに依存します) から数えてlength文字数分となります。 length が指定され、かつ負である場合、 string の終端からその文字数分の文字が省略されます (start が負の場合は、 開始位置を算出したあとで)。 もし start が切り出し位置を超える場合、 FALSE が返されます。 length が指定され、かつ 0、NULL、もしくは FALSE であれば、空の文字が返されます。 length を省略した場合は、 start の位置から文字列の最後までの部分文字列を返します。
例2 負の length の使用
$rest = substr("abcdef", 0, -1);  // "abcde" を返す $rest = substr("abcdef", 2, -1);  // "cde" を返す $rest = substr("abcdef", 4, -4);  // false を返す $rest = substr("abcdef", -3, -1); // "de" を返す

返値

string の一部を返します。失敗した場合に FALSE を返します。あるいは空文字列を返します。

エラー

エラー時に FALSE を返します。 <?phpvar_dump(substr('a', 2)); // bool(false)?>

サンプル

例3 基本的な substr() の使用法

echo substr('abcdef', 1);     // bcdef echo substr('abcdef', 1, 3);  // bcd echo substr('abcdef', 0, 4);  // abcd echo substr('abcdef', 0, 8);  // abcdef echo substr('abcdef', -1, 1); // f // 文字列中の 1 文字にアクセスすることも // "角括弧" を使用することで可能 $string = 'abcdef'; echo $string[0];                 // a echo $string[3];                 // d echo $string[strlen($string)-1]; // f

例4 substr() でのキャストの挙動

class apple {     public function __toString() {         return "green";     } } echo "1) ".var_export(substr("pear", 0, 2), true).PHP_EOL; echo "2) ".var_export(substr(54321, 0, 2), true).PHP_EOL; echo "3) ".var_export(substr(new apple(), 0, 2), true).PHP_EOL; echo "4) ".var_export(substr(true, 0, 1), true).PHP_EOL; echo "5) ".var_export(substr(false, 0, 1), true).PHP_EOL; echo "6) ".var_export(substr("", 0, 1), true).PHP_EOL; echo "7) ".var_export(substr(1.2e3, 0, 4), true).PHP_EOL;

上の例の PHP 7 での出力は、このようになります。

1) 'pe' 2) '54' 3) 'gr' 4) '1' 5) '' 6) '' 7) '1200'

上の例の PHP 5 での出力は、このようになります。

1) 'pe' 2) '54' 3) 'gr' 4) '1' 5) false 6) false 7) '1200'

参考

  • strrchr() - 文字列中に文字が最後に現れる場所を取得する
  • substr_replace() - 文字列の一部を置換する
  • preg_match() - 正規表現によるマッチングを行う
  • trim() - 文字列の先頭および末尾にあるホワイトスペースを取り除く
  • mb_substr() - 文字列の一部を得る
  • wordwrap() - 指定した文字数で文字列を分割する
  • 文字列への文字単位のアクセスと修正
  • ワード検索


    ※入力キーワードが、関数名・説明文・タグに含まれるものを検索

    関数名アルファベット別

    A B C D E F G H I J
    K L M N O P Q R S T
    U V W X Y Z _

    最終更新一覧

    stristr
     大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却

    stripslashes
     バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く

    stripos
     大文字小文字を区別せずに文字列が最初に現れる位置を取得する

    stripcslashes
     addcslashes() でクォートされた文字列をアンクォートする

    strip_tags
     文字列から HTML と PHP のタグを除去して返却

    strcspn
     指定した文字が最初に現れる位置を調べる

    strcoll
     ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する

    strcmp
     2つの文字列を比較し同じか(あるいは大小)を判定する

    strchr
     strstr() のエイリアス

    strcasecmp
     2つの文字列を比較(大文字小文字を区別せず同じとみなす)

    カテゴリー一覧

    PHP の振る舞いの変更
    音声フォーマットの操作
    認証サービス
    コマンドライン関連
    圧縮およびアーカイブ
    暗号
    データベース関連
    日付および時刻関連
    ファイルシステム
    自然言語および文字エンコーディング
    画像処理および作成
    メール関連
    数学
    テキスト以外の MIME 型
    プロセス制御
    その他の基本モジュール
    その他のサービス
    検索エンジン用の拡張モジュール
    サーバー固有のモジュール
    セッション関連
    テキスト処理
    変数・データ型関連
    ウェブサービス
    Windows 用のモジュール
    XML 操作
    GUI用の拡張モジュール