質問: PHP内に、すべてコンマ( ')で区切られた電子メールアドレスを含むフォームからの変数があります。例:user @ domain1.com、user @ domain2.com、user3 @ domain2.com、user2 @ domain4.com 私が達成しようとしているのは、変数を調べて、たとえば@ domain2.comを見つけ、その電子メールの両側にあるコンマの間のすべてを削除することです。 次のように、str_replaceを使用して、必要なテキストだけを置き換えることができます。 `$emails=str_replace("@domain2.com", "", "$emailscomma");` ただし、検索を求めているテキストに基づいて、メール全体を削除したいと考えています。 したがって、この例では、user @ domain2.comと[email protected]を削除したいと思います。 これは可能ですか? 見つけた記事を検索しましたが、何かを見つけて置き換えるものは見つかりませんでしたが、見つかったテキストだけではありません。
回答: ### 答え : #### 解決: もちろん正規表現を使用することもできますが、もう少し簡単な方法をお勧めします。配列の操作は、文字列やサブ文字列よりもはるかに簡単です。文字列を配列に変換してからフィルタリングします。 ``` $emails = "[email protected],[email protected],[email protected],[email protected]"; // Convert to array (by comma separator) $emailsArray = explode(',', $emails); $filteredArray = array_filter($emailsArray, function($email) { // filters out all emails with '@domain2.com' substring return strpos($email, '@domain2.com') === false; }); print_r($filteredArray);Copy code ``` これで、フィルタリングされた配列を再び文字列に変換できます。`implode()`関数を使用するだけです。