strrpos: 文字列中に、ある部分文字列が最後に現れる場所を探す (String 関数) - PHPプロ!マニュアル

PHPマニュアル

strrpos: 文字列中に、ある部分文字列が最後に現れる場所を探す

strrpos

(PHP 4, PHP 5)

strrpos文字列中に、ある部分文字列が最後に現れる場所を探す

説明

int strrpos ( string $haystack , string $needle [, int $offset = 0 ] )

文字列 haystack の中で、 needle が最後に現れた位置を数字で返します。

パラメータ

haystack

検索を行う文字列。

needle

needle が文字列でない場合は、 それを整数に変換し、その番号に対応する文字として扱います。 PHP 4 では、needle には一文字だけしか指定できませんでした。

offset

文字列中の任意の文字位置から検索を開始することができます。 負の値を指定すると、文字の終端より前の任意の位置で検索を終了します。

返り値

needle が存在する位置を返します。 needle が見つからない場合、FALSE を返します。

変更履歴

バージョン 説明
5.0.0 needle は 1 文字以上の文字列を指定可能です。
5.0.0 offset パラメータが追加されました。

例1 needle が haystack の中にあるかどうかの確認

"位置 0 に文字が見つかった" と "文字が見つからなかった" 場合の返り値は混同しやすいです。この違いを見分ける方法を以下に示します。

<?php

$pos 
strrpos($mystring"b");
if (
$pos === false) { // 注意: 等号が 3 つ並んでいます
    // 見つからない...
}

?>

例2 オフセットつきの検索

<?php
$foo 
"0123456789a123456789b123456789c";

var_dump(strrpos($foo'7', -5));  // 末尾から 5 文字戻ったところから検索を始めます
                                   // 結果: int(17)

var_dump(strrpos($foo'7'20));  // 文字列の 20 文字目から検索を始めます
                                   // 結果: int(27)

var_dump(strrpos($foo'7'28));  // 結果: bool(false)
?>

参考

  • strpos() - 文字列が最初に現れる場所を見つける
  • strripos() - 文字列中で、特定の(大文字小文字を区別しない)文字列が最後に現れた位置を探す
  • strrchr() - 文字列中に文字が最後に現れる場所を取得する
  • substr() - 文字列の一部分を返す
  • stristr() - 大文字小文字を区別しない strstr
  • strstr() - 文字列が最初に現れる位置を見つける


PHPマニュアル



Pick Up Q&A

Q
セッションがいいのか、それともデータベースがいいのか教えて下さい。
 このエントリーをはてなブックマークに追加 
A
>ボタンをクリックしたら選んだ商品情報を持っておきたいと思っています。 そのくらいのことならセッションもしくはCookie(期限短め:場合によってはブラウザ閉じるまで)でいいんじゃないですかね。 #わ...

>>続きを読む

一つの目安として、ECサイトの購入情報など絶対に消えてはいけないものはDBに、カートなどの一時的に使用する情報や、ユーザに任意のタイミングで消去されても構わないものはセッションにと使い分けるといいでしょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)