• ベストアンサー

文字列を置き換える

こんばんは。お世話になっております。 タイトルのように文字列を置き換える場合、str_replace()を使うことで文字列から任意の文字を書き換えることが出来るのですが、以下のように $strong_str = "<a href="#">北海道・東北</a><a href="#">北海道</a>"; $affter = str_replace("北海道", "仙台", $strong_str); とした場合、$strong_strにある、「北海道」単体のみ「仙台」に置き換えるのは、どのようにしたら良いのでしょうか? 当たり前でしょうが、このままですと、「北海道・東北」にある北海道も書き換えてしまっている状況です。 お忙しい中恐縮ですが、ご指導を頂戴できたら幸いです。 宜しくお願い致します。

  • PHP
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • rally
  • ベストアンサー率28% (32/111)
回答No.2

ルールが分かれば、簡単だと思いますよ。 「北海道単体だけ」ということであれば、タグまで含めては? $affter = str_replace(">北海道<", ">仙台<", $strong_str);

mayu_chap
質問者

お礼

rallyさんへ はじめまして、こんばんは。 アドバイスいただき有難う御座います! なるほど~こうすれば良いんだ!と思い、実際に試していて気づいたのですが、#1さんのところでも述べましたが、htmlファイルから『教えて!goo > [技術者向] コンピューター > プログラミング > PHP 』この部分を呼出し、ここの内容を書き換えるのですが、ページによって、不本意ながら改行されているところがあり、>北海道<という文字を抽出できない状態が確認できました。 htmlファイルから抜き取った際、 <a href="#">北海道・東北</a><a href="#">北海道</a> なら問題ないのですが、ページによって <a href="#">北海道・東北</a><a href="#">北海道 </a> と改行されている箇所があり、括弧で括った北海道が認識できずに書き換えることが出来ない状態です。 お忙しい中恐縮ですが、引き続きアドバイスを頂戴できれば幸いです。

mayu_chap
質問者

補足

補足欄から失礼します。 先ほどのお礼投函後、試行錯誤の末描いていた結果を得ることが出来ました。 if文にて、変数を用いて書き換える文字を数種用意して対処いたしました。 mpxさん、rallyさんとも二方とも同じ意味合いのアドバイスだと思いますし、ポイントにて私が評価するのも恐縮ですが、結果的にrallyさんのアドバイスにある、>を用いて変数に代入したことでポイントを付加させていただきます。 感謝の気持ちはお二方には同等の気持ちであることには変わりないので、ご理解のほどお願い致します。 この度は有難う御座いました。

その他の回答 (1)

  • mpx
  • ベストアンサー率71% (149/209)
回答No.1

以下でもできますが、他に1個目の北海道だけとかルールがあるのかな $strong_str = "<a href=\"#\">北海道・東北</a><a href=\"#\">北海道</a>"; $affter = str_replace("北海道・", "仙台・", $strong_str); print $affter;

mayu_chap
質問者

お礼

mpxさんへ はじめまして、こんばんは。 早々のご回答有難う御座います! あ~なるほど~~!とは思ったものの、#2さんへのお礼でも述べたいと思うのですが、サンプルで記載した$strong_strという文字列は、公開しているhtmlファイルを呼出し、変更したい箇所(このページで言うならページ上部の、『教えて!goo > [技術者向] コンピューター > プログラミング > PHP 』というリンク部分です)だけを抜き取ったものなのですが、ページによって表示が違うためにルールと言うものが存在しないのです。 なるほど~!と思いましたが、他に方法は御座いますでしょうか? 引き続きお知恵を頂戴できれば幸いです。

関連するQ&A

  • 任意の文字列で囲まれていない任意の文字列を置換するには

    任意の文字列で囲まれていない任意の文字列を置換したいです。 たとえば、『 [[ 』と『 ]] 』で囲まれていない『http://hogehoge/』を『<a href="http://hogehoge/">http://hogehoge/</a>』に置き換えるにはどうすればいいのでしょうか。 具体的には下記の【置換前】のテキストを【置換後】のような感じにしたいです。 【置換前】 http://hogehoge/ [[http://hogehoge/]] http://hogehoge/ http://hogehoge/ [[http://hogehoge/]] 【置換後】 <a href="http://hogehoge/">http://hogehoge/</a> [[http://hogehoge/]] <a href="http://hogehoge/">http://hogehoge/</a> <a href="http://hogehoge/">http://hogehoge/</a> [[http://hogehoge/]] preg_replaceかereg_replaceのどちらかで例を挙げてもらえるとありがたいです。ご教示お願いします。

    • ベストアンサー
    • PHP
  • 部分文字列の置換

    お世話になります。 <A href="index.php?page=aaa/bbbbb/cccc.xls"> という文字列からindex.php?page=を削除して、 <A href="aaa/bbbbb/cccc.xls"> としたいのですが、よくわかりません。 ereg_replace() preg_replace() など、調べて挑戦しているのですが、できません。 おわかりになる方、教えていただけないでしょうか。

    • ベストアンサー
    • PHP
  • 文字列を取り出す方法

    こんにちわ これからPhpを勉強してるのですが、 表題のとおり、文字列から任意の部分を取り出す方法をご教授下さい。 <h1>あかさたな</h1> <p><strong>たちつてと</strong></p> <p>さしすせそ</p> 上記文字列から<strong>で囲まれている部分の文字列を取り出すには どのようにすればよいでしょうか?

    • ベストアンサー
    • PHP
  • 文字列の置換

    お世話になります。 このような文字列置換可能でしょうか '&nbsp;&nbsp;|&nbsp;&nbsp;<a href=・・・>(・・・' ・・・は、任意の文字列 を '&nbsp;&nbsp;<a href=・・・>(・・・' と、いうようにです。 つまり、文字列の中に'|&nbsp;&nbsp;'と、'('が有ったら、 '|&nbsp;&nbsp;'のみを取り除いた文字列を作成する と、いうことです。 そして、文字列中に同様なパターンが複数回有れば、同時に全てを同様に処理したいのですが。 よろしくお願いいたします。

  • 文字列置換

    PHPでの文字列置換についての質問です。 文字列を受け取った時には [09/06/04 21:01:05] といった値で受け取ります。これを [6月4日 21時1分] といった値で返そうと考えています。 str_replace、explodeでの方法も考えましたがあまりににくどい処理になるため、断念しました。 なにか他に手はないものでしょうか?? よろしければ回答お願いします。

    • 締切済み
    • PHP
  • php 指定文字列以降の削除

    phpにて半角スペース以降の文字列を問答無用で削除するというプログラムを作ろうとしてるのですが上手くいきません。 どうすればできますでしょうか? ご教授のほどよろしくお願いいたします。 ---- ソースコード $str = '2017/1/1 10-28'; if (preg_match("/ /", $str)){ $replace = str_replace(' ', '', $str); } echo $replace;

    • ベストアンサー
    • PHP
  • PHPの文字列をJavascriptの変数にする

    PHPの変数に格納された文字列を、直接Javascriptの変数の一部として格納しようと考えています。 例:) <script> var txt = "<?php echo $text; ?>"; </script> しかし、$textにダブルクォーテーションなどの文字が含まれていると、スクリプト全体が破綻します。今のところ、PHPの中で、問題を起こしそうな文字列を変換するように処理しています。 例:) $text = str_replace("\\", "\\\\", $text); $text = str_replace("\"", "\\\"", $text); $text = str_replace("\n", "\\n", $text); これよりもスマートな方法(たとえば用意されている関数を使うなど)がありますでしょうか。

    • ベストアンサー
    • PHP
  • 正規表現で文字列の抜き出し

    PHP4で、文字列の中からマッチしたものを抜き出したいのですが、なかなか上手いこといきません。 $str = "<a href=http://www.abc.com/><b>ABC</b>company</a>"; preg_match("/<a href=(.*)>(.*)<\/a>/i",$str,$str_reg); http://www.abc.com/ と <b>ABC</b>company の2つを抜き出したいのですが、 <b>タグが邪魔をして抜き出せません。 どうすれば上記2つを抜き出せるのでしょうか?

    • ベストアンサー
    • PHP
  • 指定文字列を空文字に

    教えてください。 文字列(数字)に含まれる「,」を空白文字に変換しようと思い、下記のように記述しましたがうまくいきません。 $aaa='11,,111'; $bbb = str_replace($aaa,'',','); $bbbには「,」が返ってきてしまいます。$aaaは「11,,111」のままです。 $bbbに「11111」という値が返ってきてほしいのですが、どうすればよいでしょうか? どうかご教授ください。

    • ベストアンサー
    • PHP
  • 文字列中にURLを見つけたら、リンクとして出力したい

    お疲れ様です。 いつもお世話になっております。 私はPHP書きなので、PHPではすぐかけるのですが、今回はJSに埋め込まなければならないため、頭を抱えています。 PHPだとこういうことです---------------------------- preg_match_all('/(http(s?):\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/', $text, $delimiter); array_pop($delimiter); for( $i = 0;$i < count($delimiter[0]);$i++){ $text = str_replace($delimiter[0][$i], "<a href='{$delimiter[0][$i]}'>{$delimiter[0][$i]}</a>", $text); } --------------------------------------------ここまで たとえば var str = "今日は晴れだった。天気予報はhttp://www.jma.go.jp/jma/index.htmlで見られる。"; という文字列があった場合、 var str = "今日は晴れだった。天気予報は<a href="http://www.jma.go.jp/jma/index.html">http://www.jma.go.jp/jma/index.html</a>で見られる。"; と置換したいのです。(タグ回避のため<>は全角です) サンプルのURLは気象庁のページです。 str.match();で、一致させることはできるのですが、それをどうやって、タグでくるめばよいのかが分かりません。 解説しているサイトか、スクリプトを載せていただけると助かります。 よろしくお願いします。

専門家に質問してみよう