PHP

【PHP】特定の文字位置を取得する方法

本記事では、PHPで特定の文字位置を取得する方法について解説しています。

PHPの学習におすすめ参考書
気づけばプロ並みPHP 改訂版–ゼロから作れる人になる!

本書情報
出版社リックテレコム
著者谷藤 賢一
発売日2017/3/6
ページ数331ページ
レビュー
(Amazon)
(168件)
先輩くん
先輩くん
Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!
後輩ちゃん
後輩ちゃん
初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!

綺麗なコードが書けるようになる!
リーダブルコード-より良いコードを書くためのシンプルで実践的なテクニック

本書情報
出版社オライリージャパン
著者Dustin Boswell / Trevor Foucher
発売日2012/6/23
ページ数260ページ
レビュー
(Amazon)
(620件)
先輩くん
先輩くん
より良いコードを書きたい人におすすめの本だよ!
後輩ちゃん
後輩ちゃん
10以上前の書籍ですが、内容は今でも役に立つものばかりです!

mb_strpos関数とmb_strrpos関数

特定の文字位置を取得したい場合は、mb_strpos関数またはmb_strrpos関数を使用します。使い方が全く同じのため、まとめて紹介します。

$result = mb_strpos($haystack, $needle [, $offset] [, $encoding]);
$result = mb_strrpos($haystack, $needle [, $offset] [, $encoding]);
構文解説
  • $haystack:対象の文字列を指定
  • $needle:検索したい文字列を指定
  • $offset:検索開始位置を指定(省略可能)
  • $encoding:対象文字列の文字コード(省略可能)

文字列を数える時は、1文字目は1ではなく0から数えます。

mb_strpos関数とmb_strrpos関数の違いは、文字列を検索する時に先頭から検索するか末尾から検索するかの違いです。mb_strpos関数は先頭から文字列を検索し、mb_strrpos関数は末尾から文字列を検索します。

mb_strpos関数とmb_strrpos関数を使用して、特定の文字位置を取得するサンプルコードを用意したので、動作確認してみましょう。

<?php
$str = '隣の客はよく柿食う客だ';

echo mb_strpos($str, '客'); // 2
echo mb_strrpos($str, '客'); // 9

echo mb_strpos($str, '客', 3); // 9
echo mb_strpos($str, '脚'); // false

1つ目と2つ目の関数は、第一引数に対象の文字列が代入されている変数「$str」を指定し、第二引数に検索したい文字列「客」を指定しています。実行結果を確認すると、mb_strpos関数は先頭から文字を検索するため1つ目の客にヒットしその位置を返しています。mb_strrpos関数は末尾から文字を検索するため2つ目の客にヒットしその位置を返しています。

3つ目のmb_strpos関数は、1つ目と2つ目の関数と同様に引数を設定していますが、検索開始位置を指定する第三引数に「3」を指定しています。すると、mb_strpos関数は変数$strに代入されている文字の4文字目「は」から検索をします。そのため、1つ目の客ではヒットせず2つ目の客の位置を返しています。

4つ目のmb_strpos関数は、第二引数に対象の文字列に存在しない文字列を指定しています。mb_strpos関数は、検索に一致するものがなければfalseを返すためブラウザには何も表示がされません。

ブログランキング・にほんブログ村へ PVアクセスランキング にほんブログ村