閲覧数:1764
投稿日:2020-04-13
更新日:2020-04-13
対象文字列の内、「最初の。以前」と「それ以降の文字列」を取得する
※「最初の。」は何れにも含めない
strstr($targetStr,'。',true);
・第3引数をTRUE にすると、「第1引数で指定した対象文字列」の中で、「第2引数で指定した最初の指定文字」があらわれる箇所より前の部分を返す
・その際、返り値には、「第2引数で指定した指定文字」を含まなない
・また、第2引数で指定した指定文字 が、第1引数で指定した対象文字列 に含まれていない場合は、bool(false) を返す
考え方
・1.対象文字列から、「最初の。以前」を取得する
・2.対象文字列から、「上記取得文字列+。」を削除すると、「それ以降の文字列」を取得できる
コード
//対象文字列 例1 $targetStr = 'あいうえお かきくけこ さしすせそ。 たちつてと。 なにぬねの。 はひふへほ ▽まみむめも ▽やゆよ。 らりるれろ、'; $strLead = strstr($targetStr,'。',true); //第3引数をTRUE にすると、strstr() の返り値は、第1引数で指定した対象文字列の の中で、第2引数で指定した最初の指定文字 があらわれる箇所より前の部分となる(第2引数で指定した最初の指定文字) は含まなない if($strLead): $strText = str_replace($strLead.'。','',$targetStr); endif; var_dump($strLead); var_dump($strText); //対象文字列 例2 $targetStr2 = 'あいうえお かきくけこ さしすせそ'; $strLead2 = strstr($targetStr2,'。',true); //第3引数をTRUE にすると、strstr() の返り値は、第1引数で指定した対象文字列の の中で、第2引数で指定した最初の指定文字 があらわれる箇所より前の部分となる(第2引数で指定した最初の指定文字) は含まなない if($strLead2): $strText2 = str_replace($strLead.'。','',$targetStr2); endif; var_dump($strLead2); //bool(false) var_dump($strText2); //NULL
結果
string(51) "あいうえお かきくけこ さしすせそ" string(122) " たちつてと。 なにぬねの。 はひふへほ ▽まみむめも ▽やゆよ。 らりるれろ、" bool(false) NULL