「アニマル|」を置き換えるだけなら 「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"
これが難しい場合はお知らせください。