「アニマル|」を置き換えるだけなら 「Animal:」を使用すると、次の簡単なことができますstr_replace。
$check = "Apple|Orange|Animal|Dog|Grape";
$newCheck = str_replace("Animal|","Animal:"); // will be set to 'Apple|Orange|Animal:Dog|Grape'
そうですか?
ケース2の編集:
のような文字列"Apple|Orange|Animal:Dog|Cat|Grape"があり、カテゴリの後にカテゴリの 2 つのメンバーが続くと仮定します。あなたが言ったことから、この文字列を"Apple|Orange|Animal:Dog,Cat|Grape"、パイプの代わりに 2 つのグループ メンバーを区切るカンマで変換したいと考えています。これは最初のケースよりも複雑です。カテゴリ名が異なる可能性がありstr_replace、グループの最初のメンバーも異なる可能性があるため、コロンで始まる単純なことはできません。この場合、正規表現を使用して、文字列のパターンを照合して置換する必要があります。コードは次のとおりです。
$check = "Apple|Orange|Animal:Dog|Cat|Grape";
$newCheck = preg_replace("#(Animal:\w+)\|#", "$1,", $check); // will be set to "Apple|Orange|Animal:Dog,Cat|Grape"
デモ
正規表現に慣れていない場合に備えて、これが何をするのか説明しましょう。preg_replace関数の最初の引数 は、テキスト「Animal」で始まり、その後にコロンが続き、次に 1 つ以上の文字を含む単語の文字列で、パイプで終わる"#(Animal:\w+)\|#"すべての部分文字列を探すように PHP に指示します。$checkこれにより、カテゴリ名と、文字列内のそのカテゴリの最初のメンバーが検索されます。2 番目の引数 は":$1,"、このパターンの後の最初のパイプをカンマに変更するよう PHP に指示します。別のカテゴリ名がある場合は、preg_replace関数の最初の引数として渡すパターンを変更するだけです。
$check = "Apple|Orange|Animal1:Fish|Bird|Grape";
$newCheck = preg_replace("#(Animal1:\w+)\|#", "$1,", $check); // will be set to "Apple|Orange|Animal1:Fish,Bird|Grape"
これが難しい場合はお知らせください。