76231


**やりたいこと**  
ある文章で、「大阪店」か「東京店」が最初に現れた地点より後の文字列を取得したいです。  
対象文章に、「大阪店」は、0回か1回含まれています。  
対象文章に、「東京店」は、0回か1回含まれています。

* * *

**具体例**  
当サイトでは、コーディングやアルゴリズムなど、主に大阪店に関する問題のサポートを目標としています。  
→「に関する問題のサポートを目標としています。」を取得したい

当サイトでは、コーディングやアルゴリズムなど、主に東京店に関する問題のサポートを目標としています。  
→「に関する問題のサポートを目標としています。」を取得したい

大阪店では、コーディングやアルゴリズムなど、主に東京店に関する問題のサポートを目標としています。  
→「では、コーディングやアルゴリズムなど、主に東京店に関する問題のサポートを目標としています。」を取得したい

当サイトでは、コーディングや東京店など、主に大阪店に関する問題のサポートを目標としています。  
→「など、主に大阪店に関する問題のサポートを目標としています。」を取得したい

* * *

**分からない点**  
最初に現れた「文字列」より後の文字列は、[strstr](https://www.php.net/manual/ja/function.strstr.php)で取得できたのですが、最初に現れた「いずれかの文字列」より後という条件は、どう書けばよいですか？


CC BY-SA 4.0
2021-05-31T12:18:24.050
76229
2021-05-31T13:09:44.803
7886
question
php
最初に現れた「いずれかの文字列」より後の文字列を取得したい


`$result = preg_replace('/^.*?(大阪店|東京店)/', '', $source);`  
これでどうでしょう。

`$source`に「大阪店」も「東京店」も現れない場合は`$result`は`$source`と同じになってしまいますが。


CC BY-SA 4.0
2021-05-31T12:55:36.820
76230
2021-05-31T12:55:36.820
45045
76229
answer


以下は [PHP: preg_match](https://www.php.net/manual/ja/function.preg-match.php)
を使う方法です。

[code]

    <?php
    
    $sentence = '当サイトでは、コーディングや東京店など、主に大阪店に関する問題のサポートを目標としています。';
    
    if (preg_match("/(東京|大阪)店(.*)$/", $sentence, $matches)) {
      echo "{$matches[2]}\n";
    } else {
      echo "not found\n";
    }
    
    // 実行結果
    など、主に大阪店に関する問題のサポートを目標としています。
    
[/code]


CC BY-SA 4.0
2021-05-31T13:09:44.803
76231
2021-05-31T13:09:44.803
76229
answer