対象文字列の内、「最初の指定文字列以前」と「それ以降の文字列」を取得する

テキスト処理文字列

 閲覧数: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



タグ


strstr 



指定文字列より前を取得

対象文字列を、文字数に応じて半分に分割後、それぞれを取得



類似度ページランキング
順位 ページタイトル抜粋
1 対象文字列の内、「最初の指定文字列以前」と「それ以降の文字列」を取得する 69
2 「1文字目」から「最初の指定文字」前までの文字列を取得 44
3 指定文字が2回目に出現する位置以降の文字列を取得 43
4 配列キー内に「指定文字列が含まれるキー」と「その値」を抽出して、新しい配列を返す 42
5 「最後に位置している指定文字列」より後の文字列を取得 42
6 指定文字列より前を取得 38
7 PHPで最後の「指定区切り文字」より後ろを取得 37
8 文字数に基づき、文字列の一部を取得する 36
9 指定した幅で文字列を丸めた後、「…」文字を追加する 36
10 「対象文字列」に「指定文字列」が含まれていれば、「指定文字列」より後を返す 36
11 「指定文字」直後から「指定文字」直前までの文字列を返す 35
12 対象文字列を、文字数に応じて半分に分割後、それぞれを取得 34
13 「指定文字」から「指定文字」までの文字列を返す 34
14 「{ }」も「.」も使用せず、文字列の中で変数を展開する 31
15 日付(文字列)から、指定時刻のUNIXタイムスタンプを取得 31
16 「指定文字」から「指定文字」までの文字列を削除 31
17 文字列に含まれるすべての半角空白と全角空白を削除 30
18 複数の指定文字列を削除 30
19 本日が「指定日当日」「指定日以前」「指定日以降」何れであるかを判定 29
20 投稿日時をTwitterのように「 29
2024/11/23 6:11 更新
週間人気ページランキング / 11-16 → 11-22
順位 ページタイトル抜粋 アクセス数
1 配列キー内に「指定文字列が含まれるキー」と「その値」を抽出して、新しい配列を返す | 配列(型) 8
1 後ろから3文字削除 / 「18:00:00」→「18:00」 | 文字列(テキスト処理) 8
2 URLから、トップページ(index.html)判定 | ルーティング 6
3 指定文字列より前を取得 | 文字列(テキスト処理) 5
4 配列の内容(ひらがな)を、読み(あ行~わ行)で分け、新たな配列へ格納 | 配列(型) 4
4 MySQLのdatetime型カラムに格納している値と比較して、24時間以内かどうかを判定 | 日付および時刻関連 4
5 現在WebページのURLパスを第2階層まで取得 | パス 3
5 対象文字列の内、「最初の指定文字列以前」と「それ以降の文字列」を取得する | 文字列(テキスト処理) 3
5 2 つの配列(文字列とdatetime)が要素順で 対応している時、日付を整形して 新しい配列を作成 | 配列(型) 3
6 再帰処理で平坦な連想配列をツリー化 | 多次元配列(型) 2
6 「1週間後の年月日時分秒」を表示 … time() | 日付および時刻関連 2
6 投稿日時をTwitterのように「★分前」「★時間前」という文字列変換するユーザ定義PHP関数 | 日付および時刻関連 2
6 配列要素を、文字列連結して表示(元配列を上書) … foreach文+implode | 配列(型) 2
6 8桁の生年月日数字から、年齢を計算 | 日付および時刻関連 2
6 null代入とunset()の違い | 変数 2
6 PHPで最後の「指定区切り文字」より後ろを取得 | 配列(型) 2
7 配列定数同士をarray_mergeで後ろに単純連結(キーは新たに振り直す) | 定数 1
7 gethostbyaddr / IPアドレスからホスト名を取得 | ネットワーク 関数 1
7 マークダウンで書かれたURLを(エスケープ処理するのではなく)削除する | テキスト処理 1
7 対象文字列を、文字数に応じて半分に分割後、それぞれを取得 | 文字列(テキスト処理) 1
2024/11/23 1:02 更新