文字列の位置を指定して一部分の文字列を取得する方法を見てみましょう。次のような関数が用意されています。
バイト文字(半角文字)で構成される文字列の中から指定した位置の文字列を抜き出します。
関数名 | substr |
---|---|
パラメーターリスト | |
パラメター名 | 説明 |
string $string | 対象となる文字列 |
int $start |
正の場合取り出す文字列の開始位置(先頭文字は0) 負の場合は最後から数えた開始位置 |
int $length |
正の場合は取り出す文字列の長さ 負の場合は最後から指定分引いた文字の位置まで 省略した場合は最後まで |
返り値 | |
string | 切り出した文字列、失敗した場合はFALSEか空文字列 |
○ ファイル
「PregReplaceTest.php」ファイルをコピーして、次のPHPファイルをプロジェクトに追加してください。
ファイルの種類 | PHPファイル |
---|---|
ファイル名 | SubstrTest.php |
○ プログラム
次のようにプログラムを記述してください。
SubstrTest.php
○ 実行結果
○ 解説
13行目で、「substr」関数を使用しています。第1引数にターゲットとなる文字列を指定しています。第2引数に「7」と指定しているので、0から始まる7番目の文字から最後の文字までが抜き出しされ、返ってきます。
16行目のsubstr関数は、第2引数に「7」を、第3引数に「6」を指定しているため、0から始まる7番目の文字から6バイト(6文字)分切り出され、返ってきます。
19行目のsubstr関数は、第2引数に「2」を、第3引数に「-8」を指定しているため、0から始まる2番目の文字から、最後の文字から数えて8バイト(8文字)分の位置まで切り出され、返ってきます。
マルチバイト文字(全角文字)で構成される文字列の中から指定した位置の文字列を抜き出します。
関数名 | mb_substr |
---|---|
パラメーターリスト | |
パラメター名 | 説明 |
string $str | 対象となる文字列 |
int $start |
正の場合は取り出す文字列の開始位置(先頭文字は0) 負の場合は最後から数えた開始位置 |
int $length |
正の場合は取り出す文字列の長さ 負の場合は最後から指定分引いた文字の位置まで 省略した場合は最後まで |
string $encoding |
文字エンコーディング(文字コード)を指定 省略した場合は内部文字エンコーディング |
返り値 | |
string | 切り出した文字列 |
○ ファイル
「SubstrTest.php」ファイルをコピーして、次のPHPファイルをプロジェクトに追加してください。
ファイルの種類 | PHPファイル |
---|---|
ファイル名 | MbSubstrTest.php |
○ プログラム
次のようにプログラムを記述してください。
MbSubstrTest.php
○ 実行結果
○ 解説
13行目で、「mb_substr」関数を使用しています。第1引数にターゲットとなる文字列を指定しています。第2引数に「8」を、第3引数に「4」を、第4引数に「utf-8」を指定しているため、0から始まる8番目の文字から4文字分切り出され、返ってきます。その際に文字列はUTF-8の文字コードで判別されます。
19行目のmb_substr関数は、第2引数に「4」を、第3引数に「-6」を指定しているため、0から始まる4番目の文字から、最後の文字から数えて6文字分の位置まで抜き出され、返ってきます。