PHP(ピー・エイチ・ピー)

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」が返ってきてしまいます。

 

これって結構まずくて、

if(strpos("abcdefg", "ab")){
  echo "abは含まれています";
}else{
  echo "abは含まれていません";
}

とした場合に、

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

正常に判定が行えずに、

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

 

なので、

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

必ず、

if(strpos("abcdefg", "ab") !== false){
  echo "abは含まれています";
}else{
  echo "abは含まれていません";
}

としてください。

WordPress短期学習プログラム

関連記事

  1. PHP(ピー・エイチ・ピー)

    PHP

    PHPで日付けを扱う

    【PHP】date()とstrtotim()で日付を処理…

  2. PHP

    PEARのCache_Liteを試してみた

    file_get_contents()を使ってRSSから新着情報を読み…

  3. サーバー設定

    PHP

    UbuntuサーバからPHP5.6を完全に削除

    UbuntuサーバにインストールしているPHP5.6を訳合ってアン…

  4. PHP(ピー・エイチ・ピー)

    PHP

    【PHP】SJISではなくSJIS-winを使用すること!!

    mb_convert_encodingでの文字コードの変換今日…

  5. PHP(ピー・エイチ・ピー)

    PHP

    【PHP】header()関数

    こちらの記事では、PHPのheader()関数についてまとめました…

  6. Security(セキュリティ)

    PHP

    PHP脆弱性対応 フォームの改行コード、復帰コードの取り扱い

    サイト構築時、大概の場合お問合せフォームを設置すると思いますが、…

コメント

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

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

最近の記事

  1. PHP(ピー・エイチ・ピー)
  2. PHP(ピー・エイチ・ピー)
  3. WP:WordPress(ワードプレス)
  4. WP:WordPress(ワードプレス)
  5. WP:WordPress(ワードプレス)
  6. Security(セキュリティ)
  7. WP:WordPress(ワードプレス)
  8. WP:WordPress(ワードプレス)
  9. WP:WordPress(ワードプレス)
  10. アフィリエイト
PAGE TOP