- ベストアンサー
文字列を置き換える
こんばんは。お世話になっております。 タイトルのように文字列を置き換える場合、str_replace()を使うことで文字列から任意の文字を書き換えることが出来るのですが、以下のように $strong_str = "<a href="#">北海道・東北</a><a href="#">北海道</a>"; $affter = str_replace("北海道", "仙台", $strong_str); とした場合、$strong_strにある、「北海道」単体のみ「仙台」に置き換えるのは、どのようにしたら良いのでしょうか? 当たり前でしょうが、このままですと、「北海道・東北」にある北海道も書き換えてしまっている状況です。 お忙しい中恐縮ですが、ご指導を頂戴できたら幸いです。 宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ルールが分かれば、簡単だと思いますよ。 「北海道単体だけ」ということであれば、タグまで含めては? $affter = str_replace(">北海道<", ">仙台<", $strong_str);
その他の回答 (1)
- mpx
- ベストアンサー率71% (149/209)
以下でもできますが、他に1個目の北海道だけとかルールがあるのかな $strong_str = "<a href=\"#\">北海道・東北</a><a href=\"#\">北海道</a>"; $affter = str_replace("北海道・", "仙台・", $strong_str); print $affter;
お礼
mpxさんへ はじめまして、こんばんは。 早々のご回答有難う御座います! あ~なるほど~~!とは思ったものの、#2さんへのお礼でも述べたいと思うのですが、サンプルで記載した$strong_strという文字列は、公開しているhtmlファイルを呼出し、変更したい箇所(このページで言うならページ上部の、『教えて!goo > [技術者向] コンピューター > プログラミング > PHP 』というリンク部分です)だけを抜き取ったものなのですが、ページによって表示が違うためにルールと言うものが存在しないのです。 なるほど~!と思いましたが、他に方法は御座いますでしょうか? 引き続きお知恵を頂戴できれば幸いです。
お礼
rallyさんへ はじめまして、こんばんは。 アドバイスいただき有難う御座います! なるほど~こうすれば良いんだ!と思い、実際に試していて気づいたのですが、#1さんのところでも述べましたが、htmlファイルから『教えて!goo > [技術者向] コンピューター > プログラミング > PHP 』この部分を呼出し、ここの内容を書き換えるのですが、ページによって、不本意ながら改行されているところがあり、>北海道<という文字を抽出できない状態が確認できました。 htmlファイルから抜き取った際、 <a href="#">北海道・東北</a><a href="#">北海道</a> なら問題ないのですが、ページによって <a href="#">北海道・東北</a><a href="#">北海道 </a> と改行されている箇所があり、括弧で括った北海道が認識できずに書き換えることが出来ない状態です。 お忙しい中恐縮ですが、引き続きアドバイスを頂戴できれば幸いです。
補足
補足欄から失礼します。 先ほどのお礼投函後、試行錯誤の末描いていた結果を得ることが出来ました。 if文にて、変数を用いて書き換える文字を数種用意して対処いたしました。 mpxさん、rallyさんとも二方とも同じ意味合いのアドバイスだと思いますし、ポイントにて私が評価するのも恐縮ですが、結果的にrallyさんのアドバイスにある、>を用いて変数に代入したことでポイントを付加させていただきます。 感謝の気持ちはお二方には同等の気持ちであることには変わりないので、ご理解のほどお願い致します。 この度は有難う御座いました。