PHP

PHP

strpos()関数とstrstr()関数

ある文字列の中に特定の文字列が含まれているかをチェックする場合に、

strpos()関数とstrstr()関数のどちらを使うかで悩みますが、

私は、

strpos()関数の方を使用します。

 

理由は、

PHPのリファレンスに、

単純に文字列の検索を行う場合には、
注意: もし特定の haystack に needle があるかどうかを調べるだけの場合、 より早く少ないメモリを使用する strpos() を代わりに使用してください。
と記載されているからです。

 

なので、

それ程大きく変わるとは思いませんが、

念の為にstrpos()関数を使っているだけですが。

 

因みに、

strpos()関数を使用した時の返り値は
検索対象文字列の中で検索文字が最初に現れる場所」、

strstr()関数を使用した時の返り値は
検索対象文字列の検索文字が最初に現れる場所から検索対象文字列の終わりまで

です。

 

つまり、

echo strpos("abcdefg", "cd");
echo strstr("abcdefg", "cd");
とすると、

それぞれの返り値は「2」、「cdefg」となります。

 

ここで注意しないといけないのは、

例えば、

echo strpos("abcdefg", "ab");

だと「0」が返ってきてしまいます。

 

これって結構まずくて、

とした場合に、

「0」が返ってきてしまうために、

正常に判定が行えずに、

「abは含まれていません」と出力されてしまいます。

 

なので、

strpos()関数を使って文字列の検索処理を行う場合には、

必ず、

としてください。

関連記事

  1. PHP

    PHP

    【PHP】count関数でエラーが出ました。。。

    かなり昔に弊社が作成したシステムがあるのですが、諸々の理由で別サー…

  2. PHP

    PHP

    CakePHP

    久しぶりにCakePHPを使っての開発を行なっているんですが、いつ…

  3. PHP

    PHP

    勝手にサーバ移行はやめて。。。

    かなり前に弊社が作成、納品したデータの入力システムがあるのですが、…

  4. PHP

    PHP

    お名前.comのVPSサーバ(KVM)にPHPをインストール

    お名前.comのVPSサーバにPHPをインストールしてみました!!…

  5. PHP

    PHP

    nl2br()を使って改行

    PHPで改行を含む文字列を出力する際には、nl2br()を使って改…

  6. PHP

    PHP

    mb_strlen()関数の注意点!!

    PHPでバイト数ではなく文字数を取得したい場合、mb_strlen…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

最近の記事

  1. PHP
  2. PHP
  3. 風邪予防
  4. WordPress(WP)
  5. PHP
  6. 宅建
  7. アンチWP
  8. 日本語ドメイン
  9. WordPress(WP)
  10. SSL(HTTPS通信)
PAGE TOP