PHPで指定文字が2回目に出現する位置以降の文字列を取得したい。

例えば、対象文字列が「東京で-今日-ごはんを-食べました。」の場合、「-」が 2 回目に出現する位置以降の文字列を取得したい。

取得したい結果

ごはんを-食べました。

ソフトウェア開発 カテゴリーPHP カテゴリー   閲覧数:561  投稿者:しのはら花梨さん

PHPで指定文字が n 回目に出現する位置以降の文字列を取得するコード例です

指定文字が 2 回目に出現する位置以降の文字列を取得する際には、「$numberTime = 2;」と指定、
指定文字が 1 回目に出現する位置以降の文字列を取得する際には、「$numberTime = 1;」と指定してください。

$str = '東京で-今日-ごはんを-食べました。';

$search = '-';
$numberTime = 2;

$str = '東京で-今日-ごはんを-食べました。';

$search = '-';
$numberTime = 2;
$offset = 0;
while ($numberTime-- > 0) {
if (($pos = strpos($str, $search, $offset)) === false ) {
$str = '';
} else {
$str = substr($str, $pos+1);
}
}
echo $str; //今日-ごはんを-食べました。

※ n 回目の回数が可変する場合や、回数が多い場合には、このコードを参考にしてみてください。

この回答へのレス

strpos関数を使って指定文字が 2 回目に出現する位置を取得し、substr関数を使ってその位置以降の文字列を取得してください

こんにちは。
指定文字が2回目に出現する位置以降の文字列を取得するには、strpos関数を使って、指定文字が2回目に出現する位置を取得し、substr関数を使ってその位置以降の文字列を取得します。
例えば、対象文字列が「東京で-今日-ごはんを-食べました。」の場合、「-」が 2 回目に出現する位置以降の文字列を取得したい場合は、以下のようにコードを書くことができます。

$str = "東京で-今日-ごはんを-食べました。";
$pos = strpos($str, "-");
$pos = strpos($str, "-", $pos + 1);
$result = substr($str, $pos + 1);
echo $result; //ごはんを-食べました。

上記のコードでは、strpos関数で最初に「-」が出現する位置を取得し、次に「-」が2回目に出現する位置を取得しています。
そして、substr関数でその位置以降の文字列を取得しています。
上記のコードを実行すると、「ごはんを-食べました。」という結果が返されます。

ご参考までに。

この回答へのレス

strpos()関数を使用して区切り文字の位置を見つけた後、substr()関数を使用して 2 回目の区切り文字以降の文字列を取得してください

以下は、指定文字が2回目に出現する位置以降の文字列を取得するPHPのコード例です。

$str = "東京で-今日-ごはんを-食べました。";
$delimiter = "-";
$pos = strpos($str, $delimiter);
if ($pos !== false) {
    $pos = strpos($str, $delimiter, $pos + 1);
    if ($pos !== false) {
        $result = substr($str, $pos + 1);
        echo $result; // 出力結果: ごはんを-食べました。
    }
}

このコードでは、まず、strpos()関数を使用して、最初の区切り文字の位置を見つけます。
次に、2 回目の区切り文字の位置を見つけるために、strpos()関数を再度使用します。
最後に、substr()関数を使用して、2 回目の区切り文字以降の文字列を取得します。
取得した文字列は、$result変数に格納され、echo文で出力されます。

この回答へのレス

strpos関数とsubstr関数を使用して、指定された文字列内での 2 番目の指定文字の位置を検索し、その位置から末尾までの部分文字列を取得してください

以下は、PHPで指定文字が2回目に出現する位置以降の文字列を取得する方法です。
この場合、strpos関数とsubstr関数を使用して、指定された文字列内での 2 番目の指定文字の位置を検索し、その位置から末尾までの部分文字列を取得します。

$str = "東京で-今日-ごはんを-食べました。";
$delimiter = "-";

$pos = strpos($str, $delimiter);
if ($pos !== false) {
    $pos = strpos($str, $delimiter, $pos + 1);
}

if ($pos !== false) {
    $result = substr($str, $pos + 1);
    echo $result; //ごはんを-食べました。
}

このコードは、まず最初に指定された文字列内での最初の指定文字の位置を検索し、その位置より後ろに 2 番目の指定文字があるかどうかを確認します。
2 番目の指定文字が見つかった場合、指定文字の位置から末尾までの部分文字列を取得し、それを出力します。

この回答へのレス

ゲスト 1行コメント投稿

指定期間人気ページランキング / 2022-11-16 → 2025-12-11
順位 ページタイトル抜粋 アクセス数
1 QA2028 553
2 part と section と chapter の違いは何ですか? | 言葉 カテゴリー 346
3 仲介元付(専任) / 仲介元付(一般) / 仲介元付 の違いは、何ですか? | 不動産 カテゴリー 123
4 トピック の対義語は何ですか? | 言葉 カテゴリー 111
5 サービス紹介 108
6 「section」「division」「unit」「component」「module」の違いは何ですか? | 言葉 カテゴリー 84
7 カテゴリー一覧 77
8 Windowsパソコンを再起動すべき適切なタイミングについて | パソコン カテゴリー 70
9 タグ一覧 65
10 reply と comment と response の違いは何ですか? | 言葉 カテゴリー 64
11 userコメント一覧 59
12 ゲストコメント一覧 58
13 「topic」「part」「section」「chapter」を大きい順に並べてください。 | 言葉 カテゴリー 56
14 「topic」「part」「section」「chapter」「segment」「paragraph」を大きい順に並べてください。 | 言葉 カテゴリー 55
15 「四つの坂が合流している場所」を何と呼びますか? 交差点? それとも四差路ですか? | 言葉 カテゴリー 54
16 PHPでRSSフィードを効率的に表示するキャッシュ活用と更新判定について | PHP(ソフトウェア開発) カテゴリー 45
17 ルーターの電源を入れ直さなくても、IPアドレスは変更されますか? | ネットワーク(ソフトウェア開発) カテゴリー 42
18 Webページにおける topic と article の違いは何ですか? | Webサービス開発(ソフトウェア開発) カテゴリー 36
19 Webページにおける「section」「division」「unit」「component」「module」の違いは何ですか? | Webサービス開発(ソフトウェア開発) カテゴリー 35
20 Segment と Paragraph の違いは何ですか? | 言葉 カテゴリー 33
2025/12/12 1:02 更新