ある文字列に対して「この単語まで」を切り出したい場合のメモ。

指定した単語/文字列までを切り出す

まず「指定する単語」の「直前まで」を取り出すには
以下の2つの関数がありますね。

  • strstr()関数:大文字小文字を区別する
  • stristr()関数:大文字小文字を区別しない
$target_string検索対象の文字列を指定
$needle検索する文字列。「この単語まで」の文字列を指定
$before_needletrue 指定で、 $target_string 中の最初の $needle の直前までの文字列を返す
戻り値$needleが見つかった場合:文字列を返す
$needle が見つからなかった場合: false を返します。

phpマニュアル:strstr
phpマニュアル:stristr

このstrstr() / stristr()関数は、「指定した単語の直前まで」の文字列を返すので、「指定した単語まで含める」場合には
戻り値の最後に「指定した単語」($needle) を足せばよいことになります。

【サンプル:strstr()の例】

4行目:$needle 直前までの文字列の切り出し
5行目:$needle を最後に足して、$needle までの文字列を取り出し

【結果】

  • string_before_needle:「こんにちは。今日は良い」
    (検索する文字列「天気」の直前までが取り出せた)
  • string_up_to_needle:「こんにちは。今日は良い天気」
    (検索する文字列「天気」までが取り出せた)

【注意ポイント】falseが返ることを忘れずに

strstr() / stristr()関数は、対象文字列中に検索する単語がない場合には、false を返すようになってます。

明らかにその単語が対象文字列中にある、という場合は良いですが、
基本的には false の場合の処理も書いておくのが良いですね。
(思わぬところでエラーにならないように)

よりシンプルにしたい場合には、三項演算子とか使うと良さそうです。

文字列中の「この単語まで」を返す関数がないか探しましたが無いようなので、
とりあえずこうした形にしてみるか、と、ご参考までにのメモでした。

早期退職して海外で奮闘する JIN のメールマガジン

時間や場所に縛られず稼いだJINが教える

~ 最短で月収10万円稼げるようになる方法 ~

お名前(全角文字)

隣のあの人にも、思わず教えたくなる秘密

配信停止は、いつでもできます

迷惑メールは一切配信されませんので、ご安心くださいね

自らの手で未来を変える力を手に入れる!