実現したいこと
WordPressの記事本文中に出てくる特定の同じカスタム要素(記事毎に要素数は変わり、4つ〜8つぐらい)を、それぞれ順番に違う要素に置換したいです。
置換元の配列と置換後の配列を用意し str_replace
すると、置換元の値が同じなために実現したい結果が得られず、悪戦苦闘しております。。
もし良い解決方法があればご教授いただけないでしょうか?
発生している問題
以下のようなコードを書いて、
$search_array = ['hoge', 'hoge', 'hoge', 'hoge']; $replace_array = ['piyo1', 'piyo2', 'piyo3', 'piyo4']; $subject = "Hello hoge, My name is hoge, Are you hoge?, I'm fine hoge!"; echo str_replace($search_array, $replace_array, $subject);
私が実現したい事は、下記の結果なのですが、
Hello piyo1, My name is piyo2, Are you piyo3?, I'm fine piyo4!
公式のドキュメントにもあります「※str_replace() は左から右へと置換を行うので、 複数の置換を行うときには、前に追加された値を置換する可能性もあります。」や、
https://www.php.net/manual/ja/function.str-replace.php
以下のブログでご紹介されております通り、
https://php-archive.net/php/php-str-replace/
https://norm-nois.com/blog/archives/4088
結果は下記のように「 piyo1
」だけで置換されてしまいます。
Hello piyo1 , My name is piyo1, Are you piyo1, I'm fine piyo1!
どうしたら実現したい事が結果が得られるでしょうか?
お手数おかけいたしますが、よろしくお願いいたします。
試したこと
strtr
を用いて連想配列を作り、置換を行おうと思ったが、key名が同じになってしまうので断念
補足情報
- PHP7.1.18
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/22 07:57