カテゴリー

キーワード

 
> 【PHP】PHP関数「substr」「m...

【PHP】PHP関数「substr」「mb_substr」の使い方を紹介します


2015 年 9 月 25 日 投稿    view: 10610
タグ:
このエントリーをはてなブックマークに追加

substr 使い方 PHP

PHP関数「substr」「mb_substr」の使い方

こんにちは、WEBマーケティング部の杉尾です。


今回は、PHP関数の「substr」と「mb_substr」を紹介します。



substr、mb_substrとは

「substr」と「mb_substr」は両方とも文字列の一部を取得する関数です。


substr、mb_substrの使い方、具体例

具体例を見ていただくと理解が早いと思いますので、以下に羅列しました。


【PHPコード】

echo substr('abcdef', 1);       // 実行結果1 : bcdef

echo substr('あいうえお', 2,2); // 実行結果2 : ?? ※文字エンコーディングを指定できないので文字化けします。

echo substr('scenelive', 1);     // 実行結果3 : cenelive

echo substr('scenelive', 1, 3);  // 実行結果4 : cen

echo substr('scenelive', 0, 4);  // 実行結果5 : scen

echo substr('scenelive', 0, 8);  // 実行結果6 : sceneliv

echo substr('scenelive', -1, 1); // 実行結果7 : e

echo substr('scenelive', -5, -2); // 実行結果8 : eli

echo mb_substr('シーンライブ', 0, 4,"UTF-8");  // 実行結果9 : シーンラ

echo mb_substr('シーンライブ', 0, 6,"UTF-8");  // 実行結果10 : シーンライブ

echo mb_substr('シーンライブ', -2, 2,"UTF-8"); // 実行結果11 : イブ

echo mb_substr('scenelive', 0, 4); // 実行結果12 : scen

※上記コード中、//より後ろはコメントアウトされていますので、実際のウェブ画面には表示されません。



以下、具体例を元に説明を加えていきます。


substrとmb_substrの使い方、基本形

基本形は


substr( 文字列, 開始位置 [, 文字数]);

mb_substr( 文字列, 開始位置 [ ,文字数 [ ,エンコーディング]] );


です。


substrとmb_substrの開始位置指定

開始位置が正の数字の場合、文字列の先頭から数えます。
※先頭の文字から取得したい場合、『0』を指定してください。


開始位置が負の数字の場合、文字列の終端から数えます。


※終端の文字を指定したい場合は『-1』と記述してください。
※なお、そのときは文字数を1以上のどの数字にしても終端の文字しか取得できません。
なぜならば、指定した文字より後ろに文字がないからです。


substrとmb_substrの文字数指定

文字数が負の数字の場合、文字列の終端からその文字数分の文字が省略されます 。
開始位置が負の場合、開始位置を算出したあとで、計算されます。


開始位置が文字列全体の文字数を超える場合は、false が返されます。


実行結果8をご覧ください。


echo substr('scenelive', -5, -2); // 実行結果8 : eli


後ろから5番目の文字『e』が開始位置で、終端から2文字『ve』を省略しています。


substrとmb_substrの違い

扱う文字列のバイト数が違います。


substrは1バイト文字
mb_substrは2バイト文字(主に日本語の全角文字)


を扱うときに使います。


実行結果1、2、9をご覧ください。


実行結果1では、1バイト文字を取得していますから、『bcdef』という文字を取得できています。
実行結果2では、2バイト文字(日本語)を取得しようとして失敗しています。
実行結果9では、mb_substrを使い、文字エンコーディングを指定して2バイト文字(日本語)を取得しています。


substrとmb_substrで日本語を扱うときの注意

substrで日本語の文字列から文字を取得しようと思っても文字化けします。


mb_substrでも日本語文字列から文字を取得するとき、文字エンコーディングを指定しないと文字化けします。


また、mb_substrは半角文字も全角文字も、一文字を一文字として認識します。


実行結果5、9、12を比較していただけるとわかりやすいと思います。


まとめ

システムを作るときでもウェブをつくるときでも、文字を扱うときに結構な頻度で使います。


覚えておくと、重宝する関数ですので、是非とも色んな場面で応用して使ってください。


最後までお読みいただき、ありがとうございました。




よろしければもう一記事どうぞ

【PHP】自作関数とは?(ユーザー定義関数とは?)作り方を紹介します

 

 

 

杉尾成行 顔写真

この記事を書いた人

杉尾成行

株式会社SceneLive Webマーケティング部長

ウェブマーケティングコンサルタントとして、クライアントのウェブ集客をサポートしている。
また、ウェブ制作、システム制作にも携わり、数々のサイトを手掛けている。
当ホームページ、ブログシステムも制作。

前職:ライター、小説家

ウェブマーケティングコンサルタントとしてのブログ
ウェブ参謀

個人ブログ(オリジナル小説他) ⇒ 35deFA

 


カテゴリー

タグ
この記事が気に入りましたら、是非、他の方にもシェアしてください。
このエントリーをはてなブックマークに追加
関連記事