2015年11月4日

PHP 文字列の一部を取得する

«
»

Pocket

今回は「文字列の一部を取得する」方法を紹介します。
 
文字列の一部を取得すると言われてもなんのことだかよくわらないと思いますので
まずはサンプルプログラムをみてみましょう。
 


<?php

$moji = "おはよう";

$moji2 =  mb_substr($moji,0,2); // $mojiの0文字目から2文字を$moji2とする

echo $moji2;


実行結果

PHP mb_substr

解説

PHP 文字列 substr
 

mb_substrも前回紹介したmb_strlen同様はPHP側であらかじめ定義された文字列関数で、
requireなどをしなくても使えます。
 
substrはSubstring(=部分文字列)の略です。
 
mb_substr(元になる文字列,開始位置,取得したい文字数);
という形式で利用し、返り値(かえりち)として文字列が返ってきます。
 
「おはよう」は4文字ですが、最初の「お」はプログラミング界では0文字目
ということになります。
 
従って、mb_substr($moji,0,2);は「おはよう」の0文字目から2文字を取得して
という命令
になります。つまり、「お」と「は」になります。
そして、$moji2には「おは」という文字が入っていることになります。

最後の文字まで取得したい場合

以下の様なサンプルプログラムをみてみましょう。
 


<?php

$moji = "隣の竹やぶに竹立てかけたのは、竹立てかけたかったから竹立てかけたのさ";
$length = mb_strlen($moji);

$moji2 =  mb_substr($moji,5,$length); 
//mb_substr($moji,5,mb_strlen($moji)) でもOK

echo $moji2;


実行結果

mb_substr mb_strlen

解説

例えば、ある文字列の6文字目から最後の文字までを取得したいとしましょう。
6文字目というのは分かっていますが、最後の文字が何文字目なのかがわかりません
mb_substr($moji,5,ここがわからない);
という状況です。また、プログラミングでは1文字目を0と表すので
6文字目は5ということになります。(ややこしい)
 
そこで、前回学んだmb_strlenを使います。これを使うと、文字列の長さ=文字数
を取得
することができます。
 
mb_substr($moji,5,mb_strlen($moji));
 
とすることで、6文字目から、この文字列の長さ分取得する
ということになり、6文字目以降の全ての文字を取得することができます。

まとめ

・mb_substr(元になる文字列,開始位置,取得したい文字数)で文字列の一部を取得できる
・プログラミング界では1文字目は0文字目となる。6文字目は5文字目。

【関連する記事】